У меня может быть переменная количества постепенного увеличения в LINQ?

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

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

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

В основном я просто хочу показать количество/столбец индекса в LINQPad (который является потрясающим, BTW), что означает, что я не могу объявить счетчик заранее.

46
задан Mike Pateras 5 February 2010 в 07:19
поделиться

2 ответа

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

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

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

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

Я бы настоятельно рекомендовал не делать этого.

111
ответ дан 7 November 2019 в 13:53
поделиться

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

var counter = 0;
from a in stuff
select new { count = counter++; a.Name };
6
ответ дан 7 November 2019 в 13:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: