EDITAR: si solo está utilizando List<>
ay solo necesita el índice, entonces List.FindIndex
es el mejor enfoque. Dejaré esta respuesta aquí para aquellos que necesitan algo diferente (por ejemplo, encima de cualquiera IEnumerable<>
).
Utilice la sobrecarga de los Select
cuales toma un índice en el predicado, por lo que transforma su lista en un par (índice, valor):
var pair = myList.Select((Value, Index) => new { Value, Index })
.Single(p => p.Value.Prop == oProp);
Luego:
Console.WriteLine("Index:{0}; Value: {1}", pair.Index, pair.Value);
O si solo desea el índice y lo está usando en varios lugares, podría escribir fácilmente su propio método de extensión, que en Where
lugar de devolver los elementos originales, devolvió los índices de esos elementos que coincidían con el predicado.
int index
?