gpt4 book ai didi

c# - 为什么更改 linq 组中的一个项目会影响同一组中的其他项目?

转载 作者:太空宇宙 更新时间:2023-11-03 13:42:05 25 4
gpt4 key购买 nike

我正在编写一些类似这样的 C# 代码:

public class Item
{
public bool flag { get; set; }
public string itemName { get; private set;};

Item(string _name)
{
this.itemName = _name;
this.flag = false;
}
}

public class MainClass
{
public static void Main()
{
List itemList = new List<Item>();
itemList.Add(new Item("ProductA");
itemList.Add(new Item("ProductA");
itemList.Add(new Item("ProductB");

var itemGroups = from item in itemList group item by item.itemName;
foreach (var itemGroup in itemGroups)
{
foreach (Item i in itemGroup)
{
i.flag = true;
break;
}
}
}
}

我在这里想要实现的是只改变一组中的一个项目而不触及同一组中的其他项目。从上面的代码中,我希望只有 itemName 为“ProductA”的第一个项目的标志设置为 true。但结果是这两个项目(项目名称为“ProductA”)的标志都设置为 true。

我是 linq 的新手。我做错了什么吗?或者我怎样才能实现这里的目标?

非常感谢!!!

道格

最佳答案

我无法重现您的场景,因为它的每个项目都是唯一的 Item 类型。可能在您的代码中,您可能不小心将一个项目添加到列表中两次,例如

Item item1 = new Item("ProductA");
listItem.Add(item1);
....
listItem.Add(item1);

在这种情况下,在以后的任何时间点,如果您将项目名称更新为“ProductA”,则该更改将反射(reflect)在列表的两个元素中。请检查此案例。

关于c# - 为什么更改 linq 组中的一个项目会影响同一组中的其他项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16634358/

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