2009-08-24 5 views

Répondre

25
var first = yourCollection.OfType<YourType>().First(); 

Notez que la méthode First va lancer une exception s'il n'y a pas d'éléments de type YourType. Si vous ne le souhaitez pas, vous pouvez utiliser FirstOrDefault ou Take(1) à la place, en fonction du comportement souhaité.

12

Utilisez la méthode d'extension OfType:

public static T FindFirstOfType<T>(IEnumerable list){ 
return list.OfType<T>().FirstOrDefault(); 
} 
+2

cette liste IEnumerable pour en faire une extension? –

5

Vous pouvez simplement utiliser le FirstOrDefault et passer le délégué à utiliser pour la comparaison.

object[] list = new object[] { 
    4, 
    "something", 
    3, 
    false, 
    "other" 
}; 

string first = list.FirstOrDefault(o => o is string); //something 
+0

Votre code ne compile pas. Parce que 'FirstOrDefault' renvoie un' object' et que vous devez le convertir en 'string' pour qu'il soit assigné à la première variable déclarée comme' string'. –

Questions connexes