60

私はこのようなことをしたい:

from a in stuff
let counter = 0
select new { count = counter++, a.Name };

しかし、カウンターが読み取り専用であるというエラーが表示されます。クエリの外部で変数を宣言せずに、これと同様のことを行う方法はありますか?

基本的に、 LINQPadでカウント/インデックス列を表示したいだけです(これは素晴らしいです、ところで)。つまり、事前にカウンターを宣言することはできません。

4

3 に答える 3

135

副作用を使用するのではなくSelect、インデックスをとるオーバーロードを使用します。

stuff.Select((value, index) => new { index, value.Name });

副作用を使用してそれを行うことはできますが、試した方法ではできません。

int counter = 0;
var query = from a in stuff
            select new { count = counter++, a.Name };

ただし、これには強くお勧めします。

于 2010-02-05T17:20:48.573 に答える
7

インデックスだけでなく、本当にカウンターにしたい場合は、カウンター宣言をLINQ式の外に移動するだけです。

var counter = 0;
from a in stuff
select new { count = counter++; a.Name };
于 2010-02-05T17:22:41.187 に答える
1

ここに2つの変数を追加するだけNumberRowです

.Select((x,NumberRow) => new ViewModelArchiveOrder
                    {
                        NumberRow= NumberRow + 1,
                    })
于 2019-05-06T11:23:34.713 に答える