【发布时间】:2019-12-06 10:44:48
【问题描述】:
我有一个这种性质的表,Year 和 Month 一起创建了一个复合键。
+------+-------+------------------+------------------+
| Year | Month | Numeric Column 1 | Numeric Column 2 |
+------+-------+------------------+------------------+
| 2016 | 12 | 455 | 56600 | <
| 2017 | 11 | 10.56 | 98000 |
| 2017 | 12 | 45.2 | 56422.5 | <
| 2018 | 1 | 550 | 12200 |
| 2018 | 2 | 440 | 52000 |
| 2018 | 3 | 0 | 11 |
| 2018 | 4 | 0 | 11 |
| 2019 | 1 | 123 | 4200 |
+------+-------+------------------+------------------+
我想做的很简单,选择符合请求的行子集,例如,
?startyear=2016&endyear=2019&startmonth=1&endmonth=11
我已通过Year 和Month 订购了此表,然后我按如下方式应用过滤器。
IQueryable<Balance> reportToReturn = _context.Balances.OrderBy(b => b.Year).ThenBy(b => b.Month).AsQueryable();
reportToReturn = reportToReturn.Where(b => b.Year >= report.StartYear && b.Year <= report.EndYear);
reportToReturn = reportToReturn.Where(b => b.Month >= report.StartMonth && b.Month <= report.EndMonth);
List<Balance> result = reportToReturn.ToList();
当它被Month 过滤时,如果我提供上面的查询,2016 年第 12 个月和 2017 年将退出。我明白这其中的原因。
当我说startyear=2016 和startmonth=1 时,我的意思是从 2016 年的第 1 个月开始,所以两年的第 12 个月必须在结果中。在网上找不到任何有用的东西,有没有办法做到这一点?提前谢谢你。
【问题讨论】:
标签: c# linq entity-framework-6 asp.net-web-api2