EDIT: Se siete solo utilizzando un List<>
e si solo l'indice ha bisogno dell'indice, quindi List.FindIndex
è davvero l'approccio migliore. Lascerò questa risposta qui per coloro che hanno bisogno di qualcosa di diverso (ad esempio sopra a qualsiasi IEnumerable<>
).
Uso il sovraccarico di Select
che prende un indice nel predicato, in modo da trasformare la vostra lista in un (indice, valore) coppia:
var pair = myList.Select((Value, Index) => new { Value, Index })
.Single(p => p.Value.Prop == oProp);
Poi:
Console.WriteLine("Index:{0}; Value: {1}", pair.Index, pair.Value);
O se si solo vuoi l'indice e lo stai utilizzando in più punti, potresti facilmente scrivere il tuo metodo di estensione che era come Where
, ma invece di restituire gli elementi originali, ha restituito gli indici di quelli elementi che corrispondono al predicato.
fonte
2013-08-01 13:42:28
Funziona ma non in LINQ, tuttavia +1 –
Che ne dici di "int index'? –
@DylanChensky ha codificato troppo JS – lenny