我有一个foreach循环,循环遍历集合中的项目。如果该项已经存在,是否可以重用元素的属性?例如:
foreach(example item in creditItems)
{
item.Total += item.Quantity;
}
我们假设creditItems
中有3个项目。第一项和第三项是相同的,至少它们应该是。问题是它们被认为是完全不同的项目(并且可以理解)。这样做的问题是当它循环到最后一个项目时,item.Quantity
不会添加到原始item.Total
,因为它被视为新项目,总计为0 + item.Quantity
。我的逻辑刚刚结束了吗?
答案 0 :(得分:0)
您的第一个和第三个项目可能是同一个项目,但它们不是同一个对象。您可能有一个相同的项目ID字段。
如果您不希望集合中存在两个具有相同ID的项目,请确保该集合没有两个具有相同ID的项目。如果你确实想要两个具有相同ID的项目,你应该决定如何处理这种情况 - 你是否更新了第一项?第二个?他们都?
决定你想做什么,从那里实现将变得更加直截了当。
答案 1 :(得分:0)
如果我没有正确理解你,你有两个或更多的"相同" List,Array中的项目......等等。
让我们说项目有一个ID来确定它的类型,例如10是一辆汽车,11是卡车... whaetever。
然后,您可以使用LINQ通过此ID对这些项目进行分组:
var itemsGroupedById = creditItems.GroupdBy(item=> item.ID);
foreach(var idGroup in itemsGroupedById)
{
decimal total = idGroup.Sum(item => item.Quantity); // This sums up all quantities of the same ItemId
foreach(var item in idGroup)
item.Total = total; // This makes sure all items of the same kind store the total
Console.WriteLine("The total of item {0} is {1}", idGroup.Key, total);
}