2011-08-25 18 views
5

を数える:LINQの投影要素は考え

私は、このカウンタ値を設定するにはどうすればよい
var a = SomeCollection.OrderBy(...) 
       .Select(f => new MyType 
           { 
            counter = ? //I want counter value, so what first 
               //object have counter=1, second counter=2 
               //and so on 
            a=f.sometthing, 
            ... 
           }); 

?または、後でaを繰り返すのに手間がかかりますか?

答えて

8

Selectのオーバーロードを使用すると、現在の要素の0ベースのインデックスが得られます。

.Select((item, index) => new MyType 
      { 
       counter = index + 1, 
       a = item.Something 
+1

このオーバーロードについては、http://msdn.microsoft.com/en-us/library/bb534869.aspx – Reddog

+0

@Reddogで文書化されています。ありがとうございます。 –

+0

これはlinq toエンティティでは機能しませんが、 – ren

3

は、単に変数をキャプチャ:

int index = 1; 

var a = SomeCollection.OrderBy(...) 
     .Select(x => new MyType { counter = index++; }); 

各反復が呼び出されると、カウンタが増加します。

+0

これは、エンティティに対してlinqを使用しても動作しません。 – ren

関連する問題