Search code examples
c#linqlookup

How can I get the index of an item in a list in a single step?


How can I find the index of an item in a list without looping through it?

Currently this doesn't look very nice - searching through the list for the same item twice, just to get the index:

var oProp = something;

int theThingIActuallyAmInterestedIn = myList.IndexOf(myList.Single(i => i.Prop == oProp));

Solution

  • How about the List.FindIndex Method:

    int index = myList.FindIndex(a => a.Prop == oProp);
    

    This method performs a linear search; therefore, this method is an O(n) operation, where n is Count.

    If the item is not found, it will return -1