我有一个Orders
的集合,这些集合是从EF中提取的。每个Order
都有一个订单日期:
public class Order {
public DateTime Date { get; set; }
public int Id { get; set; }
}
我希望能够运行一个查询来返回某个日期范围内每天的订单数。查询方法应类似于:
public class ICollection<OrderDateSummary> GetOrderTotalsForDateRange(DateTime startDate, DateTime endDate) {
var orderDateSummary = Set.SelectMany(u => u.Orders) // ..... grouping/totalling here?!
return orderDateSummary;
}
对于信息,Set
实际上是返回用户聚合根的存储库的一部分,因此Set
的类型是DbSet<User>
。我坚持的一点是对SelectMany
方法中可查询的Orders
进行分组和求和。
OrderDateSummary类类似于:
public OrderDateSummary {
DateTime Date { get; set; }
int Total { get; set; }
}
因此,起始日期为01/01/2016,终止日期为03/01/2016的输出如下所示:
Date Total
===================
01/01/2016 10
02/01/2016 2
03/01/2016 0
04/01/2016 12
4条答案
按热度按时间6yjfywim1#
正如我所看到的,你需要生成从
start
到end
范围内的所有日期。然后计算每个日期的订单总数。看看working example on Ideone。
sg2wtvxw2#
只是你应该用
class
或struct
标记你的OrderDateSummary
,并使这些属性为public
或添加构造函数。预期结果中的日期为04/01/2016,因此,我猜,您的结束时间是第4天,而不是第3天。
bgtovc5b3#
请尝试下面的代码linq
dw1jzc5e4#
怎么样