我有一个名为DiscountableObject的列表。列表中的每个项目又有一个折扣集合。我需要的是所有DiscoubtableObjects共有的折扣列表。
码:
List<Discount> IntersectionOfDiscounts = new List<Discount>();
foreach(var discountableItem in DiscoutableObject)
{
IntersectionOfDiscounts = IntersectionOfDiscounts.Intersect(discountableItem.Discounts);
}
毫无疑问,这将返回一个空列表,因为通过IntersectionOfDiscounts在第一个实例中为空。
我想要的是拿DiscountableObject的项目1,将其与DiscountableObject的下一项进行比较,依此类推。
我知道我要做的事是错误的,因为我同时在做交集和列表的加法运算……但是还有什么让我感到困惑呢?
我该如何解决?
最佳答案
将IntersectionOfDiscounts
初始化为第一个折扣列表(如果有多个),而不是为空列表。然后,您也可以跳过“ foreach”循环中的第一项。
// add check to ensure at least 1 item.
List<Discount> IntersectionOfDiscounts = DiscoutableObject.First().Discounts;
foreach(var discountableItem in DiscoutableObject.Skip(1))
{
IntersectionOfDiscounts = IntersectionOfDiscounts.Intersect(discountableItem.Discounts);
}