重用集合中的项

本文关键字:集合 | 更新日期: 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,则应决定如何处理这种情况-是否更新第一个项目?第二个?他们两个?

决定你想做什么,从那时起,实现将更加简单。