我想要做这样的事情:我可以在LINQ中使用递增计数变量吗?
from a in stuff
let counter = 0
select new { count = counter++, a.Name };
但我得到一个错误,告诉我,计数器是只读的。有没有办法做到类似这样的事情,而不需要在查询之外声明一个变量?
基本上,我只想显示LINQPad(这真棒,顺便说一句)的计数/索引列,这意味着我不能提前申报柜台。
我想要做这样的事情:我可以在LINQ中使用递增计数变量吗?
from a in stuff
let counter = 0
select new { count = counter++, a.Name };
但我得到一个错误,告诉我,计数器是只读的。有没有办法做到类似这样的事情,而不需要在查询之外声明一个变量?
基本上,我只想显示LINQPad(这真棒,顺便说一句)的计数/索引列,这意味着我不能提前申报柜台。
而不是使用的副作用,使用Select
超载这需要一个索引:
stuff.Select((value, index) => new { index, value.Name });
您可能做到使用它的副作用,但不是在你尝试过的方式:
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 };
另一个答案强烈建议对这个之外。 http://stackoverflow.com/a/2209014/7724 – bzlm 2016-07-07 20:57:14