gpt4 book ai didi

c# - 如何在循环中使用 linq?

转载 作者:太空狗 更新时间:2023-10-30 00:03:33 26 4
gpt4 key购买 nike

让我们从一些要查询的源数据开始:

int[] someData = { 1, 2 };

运行以下代码后,一切如我所料:a 包含 2 个元素,归结为 12一些数据

List<IEnumerable<int>> a = new List<IEnumerable<int>>();
a.Add(someData.Where(n => n == 1));
a.Add(someData.Where(n => n == 2));

但是下一段代码(仅在一个循环中执行完全相同的操作)无法按预期工作。当此代码完成时,b 包含 2 个元素,但它们都是相同的 - 指向 2。在第二个循环中,它修改了 b 的第一个元素。

List<IEnumerable<int>> b = new List<IEnumerable<int>>();
for (int i = 1; i <= 2; ++i)
{
b.Add(someData.Where(n => n == i));
}

为什么会这样,我怎样才能使循环版本的行为像第一个版本一样?

最佳答案

Jon Skeet 有一个很好的答案 here

您需要将 i 分配给 temp 变量并在 Linq 查询中使用它

List<IEnumerable<int>> b = new List<IEnumerable<int>>();
for (int i = 1; i <= 2; ++i)
{
int temp = i;
b.Add(someData.Where(n => n == temp));
}

关于c# - 如何在循环中使用 linq?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7972567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com