c# - LINQ 相交但将结果添加到新列表

标签 c# linq intersect

我有一个名为 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/

相关文章:

linq - linq中foreach的 yield 返回

arrays - 在 scala 中,如何获取两个数组中从未显示的元素的数量?

mysql - MariaDB 中的 INTERSECT 查询

python - 使用 python 加速匹配两列的过程

c# - 动态 linq 构建表达式

asp.net-mvc - 如何在 Onion 架构中使用来自 Kendo UI 的 ToDataSourceResult 而不暴露 IQueryable

javascript - DotNet Highcharts-我可以在页面加载后将整个图表分配给 JS var,以便进一步操作

c# - transactionscope 锁定表

c# - .NET checkbox.Checked 总是返回 false

c# - Where Not In OR Except 在 LINQ to Objects 中模拟 SQL