我有一个名为 DiscountableObject 的列表。列表中的每个项目依次有一个 Discounts 集合。我需要的是所有 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);
}
关于c# - LINQ 相交但将结果添加到新列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10014279/