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

发布于 2024-08-20 05:50:42 字数 288 浏览 8 评论 0原文

我想做这样的事情:

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

但我收到一条错误消息,告诉我计数器是只读的。有没有办法做类似的事情,而无需在查询之外声明变量?

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

I want to do something like this:

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

But I get a error telling me that counter is read only. Is there a way to do something similar to this, without declaring a variable outside of the query?

Basically, I just want to show a count/index column in LINQPad (which is awesome, BTW), which means I can't declare counter ahead of time.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

慢慢从新开始 2024-08-27 05:50:42

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

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

可以使用副作用来做到这一点,但不是以您尝试的方式:

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

我会但强烈建议不要这样做。

Rather than using side-effects, use the overload of Select which takes an index:

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

You could do it using side-effects, but not in the way you tried:

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

I would strongly advise against this though.

一张白纸 2024-08-27 05:50:42

如果您确实希望它是一个计数器,而不仅仅是一个索引,那么只需将计数器声明移到 LINQ 表达式之外

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

If you truly want it to be a counter, and not just an index, then just move the counter declaration outside the LINQ expression

var counter = 0;
from a in stuff
select new { count = counter++; a.Name };
缪败 2024-08-27 05:50:42

只需在此处添加两个变量 NumberRow 即可

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

Just add two variable here NumberRow is for that

.Select((x,NumberRow) => new ViewModelArchiveOrder
                    {
                        NumberRow= NumberRow + 1,
                    })
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文