【发布时间】:2013-05-19 21:09:48
【问题描述】:
我正在编写一些类似这样的 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 的新手。我做错了什么吗?或者我怎样才能在这里实现目标?
非常感谢!!!
道格
【问题讨论】:
-
您有 2 个同名项目。
ProductA -
But the result is that Both the items (with itemName "ProductA") have its flag being set to true再次调试您的代码。它可以按您的预期工作。 -
您确定这是您的实际代码吗?您确定您没有两次添加相同的商品引用,因此实际上您只有 1 个产品 A,但同一个产品被列出了两次?意思是,你能在上面的代码中重现这个问题,还是那个代码被简化了?