重新使用集合中的项目

时间:2014-04-16 20:30:42

标签: c# loops foreach

我有一个foreach循环,循环遍历集合中的项目。如果该项已经存在,是否可以重用元素的属性?例如:

foreach(example item in creditItems)
{
    item.Total += item.Quantity;
}

我们假设creditItems中有3个项目。第一项和第三项是相同的,至少它们应该是。问题是它们被认为是完全不同的项目(并且可以理解)。这样做的问题是当它循环到最后一个项目时,item.Quantity不会添加到原始item.Total,因为它被视为新项目,总计为0 + item.Quantity。我的逻辑刚刚结束了吗?

2 个答案:

答案 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);

}