400 Stimmen

Was gibt LINQ zurück, wenn die Ergebnisse leer sind?

Ich habe eine Frage zu LINQ-Abfragen. Normalerweise gibt eine Abfrage eine IEnumerable<T> Typ. Wenn die Rückgabe leer ist, ist nicht sicher, ob sie null ist oder nicht. Ich bin nicht sicher, ob die folgenden ToList() wird eine Ausnahme oder einfach eine leere List<string> wenn nichts gefunden wird in IEnumerable Ergebnis?

   List<string> list = {"a"};
   // is the result null or something else?
   IEnumerable<string> ilist = from x in list where x == "ABC" select x;
   // Or directly to a list, exception thrown?
   List<string> list1 = (from x in list where x == "ABC" select x).ToList();

Ich weiß, es ist eine sehr einfache Frage, aber ich habe im Moment keinen VS zur Verfügung.

8voto

Jimmy Chandra Punkte 6495

Es wird keine Ausnahme ausgelöst, Sie erhalten eine leere Liste.

8voto

Spence Punkte 27536

Andere Beiträge hier haben deutlich gemacht, dass das Ergebnis ein "leeres" ist. IQueryable die ToList() wird korrekt in eine leere Liste usw. umgewandelt.

Seien Sie vorsichtig mit einigen der Operatoren, da sie ausfallen, wenn Sie ihnen ein leeres enumerable senden. Dies kann passieren, wenn Sie sie miteinander verketten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X