私はこのようなことをしたいです:
from a in stuff
let counter = 0
select new { count = counter++, a.Name };
しかし、カウンターが読み取り専用であるというエラーメッセージが表示されます。クエリの外部で変数を宣言せずに、これと同様のことを行う方法はありますか?
基本的には、カウント/インデックス列を LINQPad (素晴らしい、BTW)に表示したいだけです。つまり、事前にカウンターを宣言することはできません。
副作用を使用するのではなく、インデックスを取るSelect
のオーバーロードを使用します。
stuff.Select((value, index) => new { index, value.Name });
あなたcould副作用を使用してそれを行いますが、あなたが試みた方法ではありません:
int counter = 0;
var query = from a in stuff
select new { count = counter++, a.Name };
私はこれに対して強く助言します。
単にインデックスではなくカウンターにしたい場合は、カウンター宣言をLINQ式の外に移動してください。
var counter = 0;
from a in stuff
select new { count = counter++; a.Name };
ここに2つの変数を追加するだけですNumberRow
はそのためです
.Select((x,NumberRow) => new ViewModelArchiveOrder
{
NumberRow= NumberRow + 1,
})