C# IEnumerable Récupérer Le Premier Enregistrement
J'ai un IEnumerable liste des objets en C#. Je peux utiliser un pour chaque boucle de revue et d'examiner chaque objet bien, mais dans ce cas tout ce que je veux faire est d'examiner le premier objet est-il un moyen de le faire sans l'aide d'une boucle foreach?
J'ai essayé mylist[0], mais qui n'a pas fonctionné.
Grâce
Vous devez vous connecter pour publier un commentaire.
(Pour des raisons de commodité, cette réponse suppose
myList
implémenteIEnumerable<string>
; remplacerstring
avec le type approprié si nécessaire.)Si vous êtes en utilisant .NET 3.5, utilisez le
First()
méthode d'extension:Si vous n'êtes pas sûr de savoir si il existe des valeurs ou pas, vous pouvez utiliser le
FirstOrDefault()
méthode qui sera de retournull
(ou, plus généralement, la valeur par défaut du type d'élément) pour une séquence vide.Vous pouvez toujours le faire "le long chemin" sans
foreach
boucle:C'est assez moche bien 🙂
En réponse à votre commentaire, non, le retour de l'itérateur est pas placé au premier élément initialement; il est placé avant le premier élément. Vous devez appeler
MoveNext()
pour le déplacer vers le premier élément, et c'est comment vous pouvez dire la différence entre une séquence vide et l'autre avec un seul élément.EDIT: rien que d'y penser, je me demande si c'est une bonne méthode d'extension:
Rappelez-vous, il y a peut-être pas de "premier élément" si la séquence est vide.
Si vous n'êtes pas sur 3.5:
ou