【发布时间】:2018-12-13 14:01:12
【问题描述】:
我有下表
ID Date
---------------------------
1 2017-07-13 12:18:07.293
2 2017-07-16 06:36:02.340
3 2017-03-17 06:36:02.340
4 2017-04-18 06:36:02.340
5 2017-02-12 06:36:02.340
6 2018-07-03 06:36:02.340
7 2018-07-04 06:36:02.340
X 代表天数,Y 代表最小记录数。
我需要获取最近 X 天的所有记录,如果返回的记录数少于 Y,则返回最后 Y 个记录。
例如,获取最近 7 天 (x=7) 的记录,而最小记录数为 3,我希望得到:
5 2017-02-12 06:36:02.340
6 2018-07-03 06:36:02.340
7 2018-07-04 06:36:02.340
我编写了以下代码,但我希望对其进行改进:
DateTime minDate = DateTime.UtcNow.AddDays(-numOfDays);
var jobs = myList.Where(x => x.CreatedOnUtc > minDate);
if (jobs.Count() >= minItems)
return jobs;
int maxId = myList.Max(x => x.Id);
return myList.Where(x => x.Id > maxId - minItems);
谢谢。
【问题讨论】:
-
向我们展示您的尝试。你用的是哪个 dbms?
-
@jarlh,谢谢,我已经编辑了我的问题
标签: sql .net linq stored-procedures