我想要做這樣的事情:我可以在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