【发布时间】:2013-09-17 20:48:51
【问题描述】:
我正在使用 C#、NHibernate、Fluent NHibernate 和 LINQ(存储库模式)。
关于我想做的事的虚构故事
假设我有一个停车位,所以我有一辆从 date 到 date 租用车位的汽车。这将成为数据库中的一个条目。
我想知道过去 30 天内每天有多少辆车。所以可以在趋势图中使用的数据。
说明
我所拥有的是数据库中的条目,如下所示:
Entry:
--------
ID
StartDate
EndDate
我需要找出在一段时间内each day 有多少条目(比如last 30 days)。
如果我在数据库中说这个数据:
ID | Start | End
---|------------|----------
1 | 2013-01-01 | 2013-01-01
2 | 2013-01-02 | 2013-01-02
3 | 2013-01-02 | 2013-01-03 <-- NOTICE
4 | 2013-01-03 | 2013-01-03
5 | 2013-01-03 | 2013-01-05 <-- NOTICE
6 | 2013-01-04 | 2013-01-05
我的日期范围为 2013-01-01 到 2013-01-05。
我除了结果:
Date | Value | Entry IDs (not part of the result, only here for clarity)
-----------|-------|-----------
2013-01-01 | 1 | 1
2013-01-02 | 2 | 2 3
2013-01-03 | 3 | 3 4 5
2013-01-04 | 2 | 5 6
2013-01-05 | 2 | 5 6
我目前只按startdate 分组,然后获取数字,但现在这无效,因为enddate 添加了这个新要求。
我可以为该范围内的每一天做一个,尝试找到与之匹配的条目,但我认为这在数据库或 Web 服务上太昂贵了。
建议?
【问题讨论】:
-
因为是域,一天可以700个条目,没关系,我把细节缩短了,所以只有需要的数据。
-
我的错,我会更新:)
-
我检查了 2013-01-04 和 2013-01-05 似乎很好:条目 5 从 2013-01-03 到 2013-01-05 持续 3 天:2013-01-03 2013-01-04 2013-01-05 条目 6 从 2013-01-04 到 2013-01-05,这使得 2 天:2013-01-04 2013-01-05 所以 2013-01-04 变为 2:条目: 5 和 6。所以 2013-01-05 变为 2:条目:5 和 6。
标签: c# linq nhibernate fluent-nhibernate