EDIT: Якщо ви тільки з допомогою 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
?