Edição: Se você estiver usando apenas um List<>
e você só precisa do índice, então List.FindIndex
é realmente a melhor abordagem. Deixarei esta resposta aqui para aqueles que precisam de algo diferente (por exemplo, além de qualquer um IEnumerable<>
).
Use a sobrecarga Select
que requer um índice no predicado, para transformar sua lista em um par (índice, valor):
var pair = myList.Select((Value, Index) => new { Value, Index })
.Single(p => p.Value.Prop == oProp);
Então:
Console.WriteLine("Index:{0}; Value: {1}", pair.Index, pair.Value);
Ou, se você deseja apenas o índice e o usa em vários lugares, pode escrever facilmente seu próprio método de extensão Where
, mas, em vez de retornar os itens originais, ele retornou os índices dos itens correspondentes ao predicado.
int index
?