【发布时间】:2015-08-03 15:29:00
【问题描述】:
我有一个包含以下数据的“案例”表:
ID | OpenDate | CloseDate
-----------------------------
1 | 2015-01-01 | 2015-01-02
2 | 2015-01-02 | 2015-01-03
3 | 2015-01-03 | 2015-01-03
我想为指定的日期范围创建一个 linq 查询,以查看指定范围内每个日期的未结案件的计数,以便我可以创建未结案件的时间线图。一个案例在其 OpenDate、CloseDate 和其间的所有日期都被视为未结案。例如,如果一个案例于 1 月 1 日开立并于 1 月 3 日结束,则将在 1 月 1 日、2 日和 3 日计算。
如果我要查询的日期范围是 2015 年 1 月 1 日到 2015 年 1 月 4 日,以下是我希望退出查询的结果示例。
Date | Count
--------------------
2015-01-01 | 1
2015-01-02 | 2
2015-01-03 | 2
2015-01-04 | 0
如果不对报告日期范围内的每个日期进行 linq 查询,我似乎找不到一种简单的方法(例如,60 天的范围将需要对数据库进行 60 次查询)。是否有使用 EF 从一个查询中获取这些结果的简单解决方案?
编辑 修正了计数错字。同样作为澄清,一个案件被认为是开放的,直到结束日期结束。例如,ID 2 应计入 1 月 2 日和 3 日。
【问题讨论】:
-
您的预期结果没有多大意义。
2015-01-02是多少2和2015-01-03是1? -
I can't seem to find an easy way to do this我们也想看看艰难的路。 -
@MarcinJuraszek OP 正在寻求回答这个问题——对于给定的日期,第一个表中有多少范围包含该记录?
-
@ZevSpitz 是的,这就是我所追求的 - 在一个范围内的每个日期有多少个案件被认为是未结的。因此,例如,如果一个案例的开放日期为 1 月 1 日,结束日期为 1 月 3 日,它将增加 1 月 1 日、2 日和 3 日的计数。理论上我可以在请求的范围内对每个日期进行循环,但是我希望将其简化为一个查询,以避免多次调用数据库。
标签: c# linq entity-framework