Linq to SQL: .FirstOrDefault() nicht zutreffend für select new { ... }

Ich nur gefragt,diese Frage. Die führen mich zu einer neuen Frage 🙂

Bis zu diesem Punkt, ich habe das folgende Muster auswählen Zeug mit Linq to SQL, die mit dem Zweck des seins in der Lage zu handhaben, 0 "rows" zurückgegeben von der Abfrage:

var person = (from p in [DataContextObject].Persons
              where p.PersonsID == 1
              select new p).FirstOrDefault();

if (person == null)
{
    //handle 0 "rows" returned.
}

Aber ich kann nicht mit FirstOrDefault() wenn ich das mache:

var person = from p in [DataContextObject].Persons
             where p.PersonsID == 1
             select new { p.PersonsID, p.PersonsAdress, p.PersonsZipcode };

//Under the hood, this pattern generates a query which selects specific
//columns which will be faster than selecting all columns as the above
//snippet of code does. This results in a performance-boost on large tables.

Wie kann ich prüfen, ob 0 "rows" zurückgegeben von der Abfrage, die mit dem zweiten Muster?

UPDATE:

Ich denke mein build schlägt fehl, weil ich bin versucht, weisen Sie das Ergebnis der Abfrage einer Variablen (this._user) erklärt, mit der Art der [DataContext].User.

this._user = (from u in [DataContextObject].Users
              where u.UsersID == [Int32]
              select new { u.UsersID }).FirstOrDefault();

Kompilierungs-Fehler: kann Nicht implizit konvertiert Art "AnonymousType#1" bis "[DataContext].Benutzer".

Irgendwelche Gedanken an, wie kann ich dies umgehen? Würde ich machen, damit mein Objekt?

InformationsquelleAutor cllpse | 2008-10-14

Schreibe einen Kommentar