Подтвердить что ты не робот

Могу ли я иметь переменную count count в LINQ?

Я хочу сделать что-то вроде этого:

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

Но я получаю сообщение о том, что счетчик читается только. Есть ли способ сделать что-то подобное этому, не объявляя переменную вне запроса?

В принципе, я просто хочу показать столбец count/index в LINQPad (что удивительно, BTW), что означает, что я могу 't объявить счетчик раньше времени.

4b9b3361

Ответ 1

Вместо использования побочных эффектов используйте перегрузку Select, которая принимает индекс:

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

Вы можете сделать это, используя побочные эффекты, но не так, как вы пробовали:

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

Я бы настоятельно советовал этому.

Ответ 2

Если вы действительно хотите, чтобы он был счетчиком, а не просто индексом, просто переместите объявление счетчика вне выражения LINQ

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

Ответ 3

Просто добавьте две переменные здесь NumberRow для этого

.Select((x,NumberRow) => new ViewModelArchiveOrder
                    {
                        NumberRow= NumberRow + 1,
                    })