2010-12-16 9 views

Antwort

7

Leider kann man nicht die LINQ-Erweiterungsmethoden auf etwas verwenden, das nur IEnumerable implementiert. Sie können jedoch .Cast<object>() verwenden, um es in eine IEnumerable<object> umzuwandeln und dann die folgenden Methoden zu verwenden. Im Folgenden wird angenommen, dass collection vom Typ IEnumerable<T> für einige T:

auf das erste Element zuzugreifen und eine Ausnahme auslösen, wenn es keine gibt:

collection.First() 

das erste Element Für den Zugriff auf und den Typ der Standardwert, wenn gibt es keine:

collection.FirstOrDefault() 

der Standardwert des Typs null für Referenztypen (Typen wie class erklärt, zum Beispiel string, Stream, Bitmap usw.) und der "Nullwert" für Werttypen (Typen, die als struct oder enum deklariert sind, zum Beispiel int, bool, DateTime usw.).

Um nur herausfinden, ob es überhaupt ein erstes Element ist:

collection.Any() 

Alle drei dieser einen Lambda-Ausdruck als Bedingung erfolgen kann, beispielsweise .First(x => x.Name == "x"), was .Where(x => x.Name == "x").First() entspricht.

+0

Ich finde diese Methoden nicht. Mein Objekt hat nur die IEnumable-Schnittstelle implementiert. – user496949

+0

BTW, ich benutze .NET Framework 3.5 – user496949

+0

können Sie bitte eine Referenz für Ihren ersten Satz zeigen? ('Leider können Sie die LINQ-Erweiterungsmethoden nicht für etwas verwenden, das nur IEnumerable implementiert). Ich habe mein Beispiel von der MSDN-Seite kopiert und es verwenden nur ein Array von Int ... Danke! – Lorenzo

4

verwenden, um die FirstOrDefault Methode

using System.Linq; 

int[] numbers = { }; 
int first = numbers.FirstOrDefault(); 
Verwandte Themen