重用集合中的项
本文关键字:集合 | 更新日期: 2023-09-27 17:58:51
我有一个foreach循环,它循环遍历集合中的项。如果某个元素已经存在,是否可以重用该元素的属性?例如:
foreach(example item in creditItems)
{
item.Total += item.Quantity;
}
假设creditItems
中有3个项目。第一项和第三项是一样的,至少它们应该是一样的。问题是它们被认为是完全不同的项目(这是可以理解的)。这样做的问题是,当它循环到最后一个项目时,item.Quantity
不会添加到原始的item.Total
中,因为它被认为是一个新项目,所以总数是0 + item.Quantity
。我的逻辑有问题吗?
如果我没有正确地理解你,你在List、Array、,。。。无论什么
假设物品有一个ID,它决定了它的类型,例如10是汽车,11是卡车。。。捕鲸者。
然后,您可以使用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);
}
您的第一项和第三项可能是同一项,但它们不是同一对象。您可能有一个相同的项目ID字段。
如果您不希望集合中存在两个具有相同ID的项目,请确保集合中没有两个具有同一ID的项目。如果您确实希望两个项目具有相同ID,则应决定如何处理这种情况-是否更新第一个项目?第二个?他们两个?
决定你想做什么,从那时起,实现将更加简单。