.Net - LINQ Abfrage zurückgeben, die ein einzelnes Objekt?
Ist es möglich, die Verwendung einer LINQ-Abfrage ein einzelnes Objekt statt einer Liste?
User user = (from User u in users
where u.id == 5
select u);
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja,
Diese wird ausgelöst und der Ausnahme, wenn mehr als ein element von der Abfrage zurückgegeben wird.
Wenn Sie möchten, dass nur das erste element:
Verwenden SingleOrDefault() und FirstOrDefault() null zurück, für Referenz-Typen, wenn kein element vorhanden ist.
SingleOrDefault()
undFirstOrDefault()
zurück, die Standard - Wert. Diese werden nicht werdennull
für value-Typen, aber der default-Wert für den jeweiligen Wert geben.Verwenden:
.Single() und .SingleOrDefault() wirft eine Ausnahme, falls es mehrere übereinstimmungen.
- Oder um es noch einfacher:
Wenn die Abfrage mehr als ein, müssen Sie mit
First
alsSingle
löst eine exception aus, wenn es mehr als ein element in der Abfrage.oder First und FirstOrDefault.
dmck korrekt ist -- die Enumerable.Single () - Methode werden dies zu erreichen. Aber von design, es wird eine exception werfen wenn es ist mehr, dass ein Objekt in dem Satz. Wenn Sie möchten, um zu vermeiden, eine Ausnahme zu werfen, haben Sie mehrere Möglichkeiten:
Enumerable.ToArray-Methode unmittelbar gefolgt von in-indexer wie: