2016-04-24 3 views
0

Ich bin neu mit LINQ zum Abfragen der Datenbank und nur fragen, ob meine Anfrage keine Fehler hat, weil sie nicht handeln, wie ich will. Ich möchte nur überprüfen, ob in der Datenbank Elemente vorhanden sind, die mit zwei Zahlen übereinstimmen.Linq-Abfrage für zwei Werte überprüfen

Wenn ja, soll nichts in die Datenbank aufgenommen werden, aber es scheint, wie es immer wieder neue Sachen hinzufügen trotz mir einen Scheck machen, ob ein Element bereits mit diesen Zahlen excist! Was habe ich falsch gemacht und wie kann ich meine Anfrage verbessern?

 if(db.Member.Any(x => x.ID == c && x.CountryID == d)) 
     { 
      Do something if there is a match and the member already excist in DB... 
     } else 
     { 
      Write new Member to DB.... 
     } 
+0

Sind 'c' und' d' sowohl 'int' oder welcher Typ? – Sampath

+0

@Sampath ja, sie sind beide INT –

+0

Es scheint, dass Sie nicht mit den Werten c oder d liefern, die in der Datenbank vorhanden sind. Wie berechnen Sie diese Werte? Und warum haben Sie ein Feld namens "ID", das einen Datensatz nicht eindeutig identifiziert (da Sie countryID in die Abfrage einbeziehen). Gibt Any() true zurück, wenn nur eines dieser Felder angegeben wird? –

Antwort

1

Bitte versuchen Sie diese Version auch.

var memberObject=db.Member.Where(x => x.ID == c && x.CountryID == d).FirstOrDefault(); 

if (memberObject==null){ 
    //Write new Member to DB.... 
}else{ 
    //Do something if there is a match and the member already excist in DB... 
} 
+0

Danke, aber es fügen immer noch neue Elemente zur DB hinzu !? –

+0

Dann müssen Sie nicht solche Werte auf Ihre speziellen record.Otherwise wie kann es sein happened.Can Sie den Datensatz teilen, die Sie versuchen, zu finden? kann Tabellenzeilenbild oder etwas ähnliches sein. – Sampath

+1

Es funktioniert jetzt! Ich habe beim Kopieren/Einfügen Ihres Codes einen Tippfehler gemacht! Danke für die Hilfe! –

Verwandte Themen