2011-01-10 13 views
7

Używam kwerendy LINQ, jak poniżej.LINQ - Sekwencja nie zawiera elementów

object.collection.where(t => t.id.Equals("2")).First(); 

Otrzymuję błąd "Sekwencja nie zawiera elementów". Dlaczego wynik powoduje błąd, gdy wynik nie zawiera elementów? Czy nie powróci on do wartości null, gdy nie zostaną znalezione żadne wyniki? Tak dzieje się podczas korzystania z SQL.

Odpowiedz

5
object.collection.where(t => t.id.Equals("2")).FirstOrDefault(); 
16

Działa zgodnie z projektem. Metoda First() ma zostać wywołana, gdy wiadomo, że przynajmniej jeden wiersz zostanie zwrócony. Jeśli tak nie jest, wywołaj FirstOrDefault().

+1

Powodem są dwa pierwsze warianty, aby uzyskać określone wyjątki ułatwiające debugowanie. Zamiast niejasnego wyjątku odwołania o wartości zerowej otrzymujesz bardziej szczegółową "sekwencję bez elementów". –

Powiązane problemy