我的工作类似这样的一些C#代码:为什么更改linq组中的一个项目会影响同一组中的其他项目?
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。但结果是两个项目(带有itemName“ProductA”)的标志都被设置为true。
我是新来的linq。我做错了什么?或者我怎样才能在这里实现目标?
非常感谢!
道格
您有两个同名的项目。 'ProductA' – Saravanan
'但结果是这两个项目(带有itemName“ProductA”)的标志都设置为true'再次调试您的代码。它按照你的预期工作。 – I4V
你确定*这是你的实际代码吗?您是否确定*您没有添加两次相同的项目参考,因此实际上您只有1个产品A,但是同一个产品列出了两次?意思是说,你可以在上面的代码中重现问题,还是代码在这个问题上被忽略了? –