2012-12-07 27 views
7

List<T>.FindIndex(Int32, Predicate <T>) var. Bu yöntem, bir IList<T> nesnesi için tam olarak istediğim şeydir.
Biliyorum IList, IndexOf(T) yöntemine sahiptir, ancak karşılaştırma algoritmasını tanımlamak için yüklemeye ihtiyacım var.IList <T> .FindIndex (Int32, Predicate <T>)

IList<T>'da bir öğenin dizinini bulmak için bir yöntem, uzantı yöntemi, LINQ veya bazı kod var mı?

+0

Bazı LINQ bunu çağrıları vardır düşündüm. Ama eğer ör. 'Başka bir şeyle (...)' indeks kaybolur. – thersch

cevap

13

Iyi gerçekten kolayca kendi uzantısı yöntemi yazabilirsiniz:

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; 
} 
İlgili konular