FirstIndex() and LastIndex()
Finds the index of the first of last occurence which matches the predicate.
Source
public static int FirstIndex<T>(this IEnumerable<T> list, Func<T, bool> predicate) {
    int index = 0;
    foreach (var item in list) {
        if (predicate(item)) {
            return index;
        }
        index++;
    }
    return -1;
}
public static int LastIndex<T>(this IEnumerable<T> list, Func<T, bool> predicate) {
    int index = 0;
    foreach (var item in list.Reverse()) {
        if (predicate(item)) {
            return list.Count() - index - 1;
        }
        index++;
    }
    return -1;
}Example
int[] l = new int[] { 3, 2, 1, 2, 6 };
Console.WriteLine(l.FirstIndex(n => n == 2)); // 1
Console.WriteLine(l.LastIndex(n => n == 2));  // 3Author: Fons Sonnemans
Submitted on: 9 jun. 2011
Language: C#
Type: System.Collections.Generic.IEnumerable<T>
Views: 7040