РЕДАКТИРОВАТЬ: Если вы используете толькоList<>
и вам нужен только индекс, то List.FindIndex
это действительно лучший подход. Я оставлю этот ответ здесь для тех, кому нужно что-то другое (например, поверх любого IEnumerable<>
).
Используйте перегрузку Select
которого занимает индекс в предикате, поэтому вы преобразуете свой список в пару (индекс, значение):
var pair = myList.Select((Value, Index) => new { Value, Index })
.Single(p => p.Value.Prop == oProp);
Затем:
Console.WriteLine("Index:{0}; Value: {1}", pair.Index, pair.Value);
Или, если вам нужен только индекс, и вы используете его в нескольких местах, вы можете легко написать свой собственный метод расширения, который был похож Where
, но вместо возврата исходных элементов он возвращал индексы тех элементов, которые соответствовали предикату.
int index
?