2010-12-16 4 views

Répondre

7

Malheureusement, vous ne pouvez pas utiliser les méthodes d'extension LINQ sur quelque chose qui implémente seulement IEnumerable. Vous pouvez cependant utiliser .Cast<object>() pour le transformer en IEnumerable<object>, puis utiliser les méthodes suivantes. Ce qui suit suppose que collection est de type IEnumerable<T> pour certains T:

Pour accéder au premier élément et jeter une exception s'il n'y en a pas:

collection.First() 

Pour accéder au premier élément et obtenir la valeur par défaut du type si il n'y a pas:

collection.FirstOrDefault() 

valeur par défaut est le type est null pour les types de référence (types déclarés comme class, par exemple string, Stream, Bitmap, etc.) et la "valeur zéro" pour les types de valeurs (types déclarés struct ou enum, par exemple int, bool, DateTime, etc.).

Pour trouver seulement savoir s'il y a un premier élément du tout:

collection.Any() 

Tous les trois d'entre eux peut prendre une expression lambda comme condition, par exemple .First(x => x.Name == "x"), ce qui équivaut à .Where(x => x.Name == "x").First().

+0

Je ne trouve pas ces méthodes. Mon objet n'a implémenté que l'interface IEnumable. – user496949

+0

BTW, j'utilise .NET Framework 3.5 – user496949

+0

pouvez-vous s'il vous plaît montrer une référence pour votre première phrase? ('Malheureusement, vous ne pouvez pas utiliser les méthodes d'extension LINQ sur quelque chose qui implémente uniquement IEnumerable'). J'ai copié mon échantillon de la page MSDN et il utilise juste un tableau d'int ... merci! – Lorenzo

4

utiliser la méthode FirstOrDefault

using System.Linq; 

int[] numbers = { }; 
int first = numbers.FirstOrDefault(); 
Questions connexes