我的工作類似這樣的一些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,但是同一個產品列出了兩次?意思是說,你可以在上面的代碼中重現問題,還是代碼在這個問題上被忽略了? –