EDIT: Nếu bạn chỉ sử dụng một List<>và bạn chỉ cần chỉ mục, thì đó List.FindIndexthực sự là cách tiếp cận tốt nhất. Tôi sẽ để câu trả lời này ở đây cho những người cần bất cứ điều gì khác biệt (ví dụ như trên bất kỳ IEnumerable<>).
Sử dụng quá tải trong Selectđó có một chỉ mục trong vị ngữ, do đó bạn chuyển đổi danh sách của mình thành một cặp (chỉ mục, giá trị):
var pair = myList.Select((Value, Index) => new { Value, Index })
.Single(p => p.Value.Prop == oProp);
Sau đó:
Console.WriteLine("Index:{0}; Value: {1}", pair.Index, pair.Value);
Hoặc nếu bạn chỉ muốn chỉ mục và bạn đang sử dụng điều này ở nhiều nơi, bạn có thể dễ dàng viết phương thức tiện ích mở rộng của riêng mình Where, nhưng thay vì trả về các mục ban đầu, nó sẽ trả về các chỉ mục của các mục phù hợp với vị từ.
int index?