我可以在LINQ中使用递增计数variables吗?

我想要做这样的事情:

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

但是我得到一个错误,告诉我计数器是只读的。 有没有办法做类似的事情,而不需要在查询之外声明一个variables?

基本上,我只是想在LINQPad中显示一个计数/索引列(这很棒,BTW),这意味着我不能提前申报柜台。

而不是使用副作用,使用Select的重载索引:

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

可以用副作用来做,但不能用你的方式:

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

我强烈build议不要这样做。

如果你真的希望它成为一个计数器,而不仅仅是一个索引,那么只需将计数器声明移到LINQexpression式之外

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