Avatar billede sykofanten Nybegynder
30. maj 2008 - 00:22 Der er 10 kommentarer og
1 løsning

linq query - not equals driller

var q = from c in dataDc.Peoples from d in dataDc.Desks where c.PersonId.Equals(d.PersonId) select c;

Jeg er interesseret i præcis det omvendte, men jeg kan ikke få "not equals" til at virke på nogen måder.
Avatar billede Syska Mester
30. maj 2008 - 00:39 #1
Du har prøvet med "!" foran din equels ?
Avatar billede Syska Mester
30. maj 2008 - 00:41 #2
Har ingen data jeg kan prøve med ...
            var v = from p1 in db.Players
                    from p2 in db.Players
                    where !p1.UID.Equals(p2.UID)
                    select p1;

Giver ingen compile fejl ...

// ouT
Avatar billede sykofanten Nybegynder
30. maj 2008 - 01:07 #3
det giver ingen compilefejl, men det er der nu så meget der ikke gør. det giver i hvert fald slet ikke det rigtige. :)

Det gav:

name: Bruce Lee                                          id: 1
name: Chuck Norris                                      id: 2
name: Jean-Claude Van Damme                              id: 4
name: Arnold Schwarzenegger                              id: 5
name: Sylvester Stallone                                id: 6
name: Clint Eastwood                                    id: 7
name: Bruce Lee                                          id: 1
name: Wesley Snipes                                      id: 3
name: Jean-Claude Van Damme                              id: 4
name: Arnold Schwarzenegger                              id: 5
name: Sylvester Stallone                                id: 6
name: Clint Eastwood                                    id: 7
name: Bruce Lee                                          id: 1
name: Chuck Norris                                      id: 2
name: Wesley Snipes                                      id: 3
name: Arnold Schwarzenegger                              id: 5'KontorAdminSys.vshost.exe' (Managed): Loaded 'Anonymously Hosted DynamicMethods Assembly'

name: Sylvester Stallone                                id: 6
name: Clint Eastwood                                    id: 7
name: Bruce Lee                                          id: 1
name: Chuck Norris                                      id: 2
name: Wesley Snipes                                      id: 3
name: Jean-Claude Van Damme                              id: 4
name: Sylvester Stallone                                id: 6
name: Clint Eastwood                                    id: 7

og det skulle kun have givet:


name: Chuck Norris                                      id: 2
name: Sylvester Stallone                                id: 6
name: Clint Eastwood                                    id: 7

Det underlige er at jeg sagtens kan få de 4 frem jeg IKKE er interesseret i, men jeg kan ikke få de 3 frem jeg gerne vil... og efter at have søgt på google tror jeg desværre bare jeg må konstatere at det er umuligt med linq, desværre.
Avatar billede sykofanten Nybegynder
30. maj 2008 - 01:39 #4
Løste den sådan her:

            var q = from c in dataDc.Peoples from d in dataDc.Desks where c.PersonId.Equals(d.PersonId) select c;

            var list = q.ToList();

            foreach (People p in dataDc.Peoples)
            {
                if (list.Contains(p))
                    i++;
                else
                    this.Add(p);
            }

Kan godt se det er temmelig logisk og ligetil, så det var nok bare fordi jeg var træt.

Napper selv pointsne :D
Avatar billede Syska Mester
30. maj 2008 - 01:45 #5
Løser hvad du sprøger om ... og så napper du selv point ... fair nok.

Uden at kende din kode, vil jeg da mene det er en super ikke optimal måde at løse det på, end hvad du skulle have haft løst ... lader som om du har valgt et kompromi.

// ouT
Avatar billede arne_v Ekspert
30. maj 2008 - 04:07 #6
Jeg vil tillade mig at gætte på hvad problem og løsning er.
Avatar billede arne_v Ekspert
30. maj 2008 - 04:07 #7
SELECT *
FROM spm833262
GO

-- positiv
SELECT nickname
FROM spm833262
WHERE type='svar'
GO

-- negativ forkert
SELECT nickname
WHERE type<>'svar'
GO

-- negativ rigtig
SELECT nickname
FROM spm833262
WHERE nickname NOT IN (SELECT nickname FROM spm833262 WHERE type='svar')
GO
Avatar billede arne_v Ekspert
30. maj 2008 - 04:08 #8
1> SELECT *
2> FROM spm833262
3> GO
id          nickname            type
----------- -------------------- ----------
          1 sykofanten          kommentar
          2 buzzzz              kommentar
          3 sykofanten          svar

(3 rows affected)
1>
2> -- positiv
3> SELECT nickname
4> FROM spm833262
5> WHERE type='svar'
6> GO
nickname
--------------------
sykofanten

(1 row affected)
1>
2> -- negativ forkert
3> SELECT nickname
4> FROM spm833262
5> WHERE type<>'svar'
6> GO
nickname
--------------------
sykofanten
buzzzz

(2 rows affected)
1>
2> -- negativ rigtig
3> SELECT nickname
4> FROM spm833262
5> WHERE nickname NOT IN (SELECT nickname FROM spm833262 WHERE type='svar')
6> GO
nickname
--------------------
buzzzz

(1 row affected)
Avatar billede arne_v Ekspert
30. maj 2008 - 04:09 #9
using System;
using System.Linq;
using System.Data.Linq;
using System.Data.Linq.SqlClient;
using System.Data.Linq.Mapping;
using System.Data.SqlClient;

namespace E
{
    [Table(Name="spm833262")]
    public class Spm833262
    {
        [Column(IsPrimaryKey=true)]
        public int Id;
        [Column]
        public string Nickname;
        [Column]
        public string Type;
    }
    public class Program
    {
        public static void Main(string[] args)
        {
            SqlConnection con = new SqlConnection(@"Server=ARNEPC3\SQLEXPRESS;Integrated Security=SSPI;Database=Test");
            DataContext db = new DataContext(con);
            Table<Spm833262> spm833262 = db.GetTable<Spm833262>();
            // positiv
            var q1 = from indlaeg in spm833262
                    where indlaeg.Type == "svar"
                    select indlaeg.Nickname;
            Console.WriteLine("Positiv:");
            foreach(var nn in q1) Console.WriteLine("  " + nn);
            // negativ forkert
            var q2 = from indlaeg in spm833262
                    where indlaeg.Type != "svar"
                    select indlaeg.Nickname;
            Console.WriteLine("Negativ forkert:");
            foreach(var nn in q2) Console.WriteLine("  " + nn);
            // negativ rigtig
            var q3 = from indlaeg in spm833262
                    where !(from indlaeg2 in spm833262 where indlaeg2.Type == "svar" select indlaeg2.Nickname).Contains(indlaeg.Nickname)
                    select indlaeg.Nickname;
            Console.WriteLine("Negativ rigtig:");
            foreach(var nn in q3) Console.WriteLine("  " + nn);
            Console.ReadKey();
        }
    }
}
Avatar billede arne_v Ekspert
30. maj 2008 - 04:09 #10
Positiv:
  sykofanten
Negativ forkert:
  sykofanten
  buzzzz
Negativ rigtig:
  buzzzz
Avatar billede arne_v Ekspert
30. maj 2008 - 04:10 #11
rettelse (der manglede en linie):

-- negativ forkert
SELECT nickname
FROM spm833262
WHERE type<>'svar'
GO
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester