Vous voulez seulement accéder au premier élément d'un objet qui a implémenté IEnumerable, comment faire?Comment accéder au premier élément d'un objet implémenté par IEnumerable
Répondre
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()
.
utiliser la méthode FirstOrDefault
using System.Linq;
int[] numbers = { };
int first = numbers.FirstOrDefault();
Je ne trouve pas ces méthodes. Mon objet n'a implémenté que l'interface IEnumable. – user496949
BTW, j'utilise .NET Framework 3.5 – user496949
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