EDIT : Si vous êtes uniquement en utilisant un List<>
et vous uniquement ont besoin de l'index, alors List.FindIndex
est en effet la meilleure approche. Je vais laisser cette réponse ici pour ceux qui ont besoin de quelque chose de différent (par exemple, au-dessus de n'importe quel IEnumerable<>
).
Utilisez la surcharge de Select
qui prend un index dans le prédicat, donc vous transformez votre liste en une paire (index, valeur) :
var pair = myList.Select((Value, Index) => new { Value, Index })
.Single(p => p.Value.Prop == oProp);
Ensuite :
Console.WriteLine("Index:{0}; Value: {1}", pair.Index, pair.Value);
Ou si vous uniquement vous voulez l'index et que vous l'utilisez à plusieurs endroits, vous pourriez facilement écrire votre propre méthode d'extension comme suit Where
mais au lieu de renvoyer les éléments originaux, elle renvoie les index des éléments qui correspondent au prédicat.
0 votes
Duplicata possible : Trouver un élément dans une liste par LINQ