2012-12-07 9 views
7

Es gibt eine List<T>.FindIndex(Int32, Predicate <T>). Diese Methode ist genau das, was ich für ein Objekt IList<T> möchte.
Ich weiß IList hat eine Methode IndexOf(T), aber ich brauche das Prädikat, um den Vergleich Algorithmus zu definieren.IList <T> .FindIndex (Int32, Prädikat <T>)

Gibt es eine Methode, die Erweiterung Methode, LINQ oder einen Code, den Index ein Element in einem IList<T> zu finden?

+0

Ich dachte, es gibt einige LINQ, das zu tun aufruft. Aber wenn ich z.B. 'Wo (...)' mit etwas anderem ist der Index verloren. – thersch

Antwort

13

Nun können Sie wirklich leicht Ihre eigene Erweiterungsmethode schreiben:

public static int FindIndex<T>(this IList<T> source, int startIndex, 
           Predicate<T> match) 
{ 
    // TODO: Validation 
    for (int i = startIndex; i < source.Count; i++) 
    { 
     if (match(source[i])) 
     { 
      return i; 
     } 
    } 
    return -1; 
}