C# 使用复合键ASP.NET Web API选择结果集(筛选器)
我有一个这样的表,C# 使用复合键ASP.NET Web API选择结果集(筛选器),c#,linq,entity-framework-6,asp.net-web-api2,C#,Linq,Entity Framework 6,Asp.net Web Api2,我有一个这样的表,Year和Month一起创建一个复合键 +------+-------+------------------+------------------+ | Year | Month | Numeric Column 1 | Numeric Column 2 | +------+-------+------------------+------------------+ | 2016 | 12 | 455 | 56600 | &
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 |
+------+-------+------------------+------------------+
我已按年
和月
订购了此表,然后我按如下方式应用筛选器
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();
IQueryable reportToReturn=\u context.Balances.OrderBy(b=>b.Year)。然后by(b=>b.Month)。AsQueryable();
reportToReturn=reportToReturn.Where(b=>b.年>=report.StartYear&b.年b.月>=report.StartMonth&b.月您的Where子句错误。您需要分别处理第一年和最后一年,例如:
var result = balances
.Where(x =>
x.Year == startYear && x.Month >= startMonth ||
x.Year > startYear && x.Year < endYear ||
x.Year == endYear && x.Month <= endMonth);
var结果=余额
.其中(x=>
x、 年==开始月份和开始月份>=开始月份||
x、 年份>开始年份和结束年份<结束年份||
x、 年==年底和x月
var result = balances
.Where(x =>
x.Year == startYear && x.Month >= startMonth ||
x.Year > startYear && x.Year < endYear ||
x.Year == endYear && x.Month <= endMonth);