2010-11-18 8 views
2

基本的には、本の同等:インデックスを返すLinq関数はありますか?

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は1を持っているが、私はC#でそれを見つけることができません。そうでなければ、大したことはなく、私はそれを書きましたが、すでに存在するならば、私はむしろ標準に固執したいと思います。それぞれforeachの上に肯定的なint i=0宣言を持つビート。

答えて

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

はまた、捕獲変数としてi++を使用して、あなたのアプローチは安全ではないことに注意してください。誰かが例えばCount()と呼ぶことができます。例えば、Parallelです。

+2

+1 ...単なる秒! :) –

+0

@Ahmad:私もあなたに投票するつもりだったが、あなたはすでにそれを削除した。私は彼がパンチラインにあなたを打ち負かすので、彼は余分な信用に値するとは思わない); – mpen

+0

私はforeachの代わりに、これをあまりにも使用することができると思いますか? 'myEnum.Select((e、i)=> {/ *私のループの内容* /});'? – mpen

関連する問題