2010-11-18 17 views
2

Temel olarak, bu eşdeğer:Endeksleri döndüren bir Linq işlevi var mı?

public static IEnumerable<KeyValuePair<int, T>> Enumerate<T>(this IEnumerable<T> enumerable) 
{ 
    int i = 0; 
    return enumerable.Select(e => new KeyValuePair<int, T>(i++, e)); 
} 

Python birine sahiptir, ancak C# bulamıyorum. Değilse, biggie yok, sadece yazdım, ama eğer zaten varsa, standarda bağlı kalmayı tercih ederim. Her bir foreach'un üzerinde bir int i=0 bildirgesine sahip olan Beats.

cevap

6
return enumerable.Select((e, i) => new KeyValuePair<int, T>(i, e)); 

Ayrıca yakalanan değişken olarak i++ kullanarak yaklaşım güvenli olmadığını unutmayın; Birisi, örneğin Parallel kullanımının Count() numarasını arayabilir.

+2

+1 ... sadece saniye! :) –

+0

@Ahmad: Ben de sana oy verecektim ama sen zaten sildin. Seni fazladan krediye hak ettiğini düşünmüyorum çünkü seni yumrukla dövüyordu;) – mpen

+0

Sanırım foreach yerine burayı da kullanabilirim. myEnum.Select ((e, i) => {/ * döngü içeriğim * /}); '? – mpen

İlgili konular