【发布时间】:2018-05-31 07:03:00
【问题描述】:
我有以下表结构。
ID Date OrderNo Status
1 2018-01-01 123 Open
1 2018-01-01 124 Open
1 2018-01-01 125 Open
1 2018-01-01 126 Open
1 2018-01-01 127 Closed
1 2018-01-03 128 Open
1 2018-01-03 129 Open
1 2018-01-03 130 Open
1 2018-01-04 131 Open
1 2018-01-04 132 Open
1 2018-01-04 133 Closed
1 2018-01-05 134 Open
我想准备一份报告,其中应显示状态“已关闭”(状态未关闭)的特定日期的订单计数
它还应该在表格中显示从最小日期到最大日期。
此表将包含近 2-3 年的数据。所以性能是 加载报告的关键因素。和某处平均 50k-60k 的行数。
所以报告应该如下
Date Count
2018-01-01 4
2018-01-02 0
2018-01-03 7 ( 4 open orders of 1st + 0 open orders of 2nd + 3 open orders of 3rd)
2018-01-04 9 ( 1st date 4 + 0 2nd + 3 3rd + 2 4th date)
我想使用 Entity Framework 来生成它。
提前致谢。
【问题讨论】:
-
到目前为止有什么尝试吗?
-
由于 CTE 是内存中的表对象而不是临时表,因此您希望在 .Net 中创建一个匿名对象
-
我可以很容易地使用 EF 编写错误的代码来产生结果,但不知道递归查询在 ef 中是如何工作的,这就是为什么在这里发布。因为这可能会持续一整年或超过 2-3 年的范围。所以性能是关键。
-
顺便说一句,你是怎么得到这张桌子的?不是来自 SQL 数据库?
-
这个问题不是微不足道的,所以我不明白为什么它被否决了。首先,OP 需要一个运行总数,第二个 - 固定键范围。 IMO 没有有效的方法可以通过 LINQ to Entities 查询来实现这一目标。
标签: c# .net sql-server entity-framework entity-framework-6