在LINQ中过滤具有多个日期范围的数据

时间:2014-11-03 12:08:27

标签: c# linq

我需要过滤多个日期范围内的一些数据

public class ProductSale{
 public long ID {get; set;}
 public long ProductID {get; set;}
 public DateTime SaleDate {get; set;}
 ...
}
public class ProductSaleRang{
 public long ID {get; set;}
 public DateTime StartDate {get; set;}
 public DateTime EndDate {get; set;}
 ...

}

我有这两张桌子 以上作为产品销售记录,第二个具有报告的销售范围日期 我需要知道ProductSaleRange表中提到的所有范围内的每个产品销售计数组合的数量(两个范围永远不会相互重叠) 我如何在LINQ中实现这一目标。 需要帮忙 提前致谢

1 个答案:

答案 0 :(得分:1)

这是代码可重现性中最简单的一个。无论如何它有复杂度O(n * m),我不知道它是否符合你的需求。

List<ProductSale> productSales = /*Data here*/;
List<ProductSaleRang> productSaleRang = /*data here*/ ;

productSales.Where(ps => productSaleRang.Any(psr => psr.StartDate <= ps.SaleDate && psr.EndDate >= ps.SaleDate));