用于合并多行的 LINQ 查询
本文关键字:LINQ 查询 合并 用于 | 更新日期: 2023-09-27 18:33:52
我正在尝试将有效的SQL查询转换为LINQ等效项。这是查询。
SELECT REPORT_NUMBER,
case when count(distinct STATE) > 1 then 'PENDING'
else case when max(STATE) = 'REPORTED' then 'REPORTED'
else 'PENDING' end end status,
max(REPORT_YEAR)
FROM SAMPLE
GROUP BY REPORT_NUMBER
ORDER BY max(REPORT_YEAR) DESC
到目前为止,我创建了需要帮助的 LINQ 查询。
var sums = from foo in db.SAMPLEs
group foo by foo.REPORT_NUMBER into groupings
orderby groupings.Key ascending
select new ReportListModel
{
ReportNbr = groupings.Key,
ReportYear = groupings.Max(g => g.REPORT_YEAR),
ReportSt = groupings.Max(g => g.STATE)
};
使用groupings.Max(g => g.STATE)
为我提供了正确的记录数量,但显然给了我不正确的字段结果。
如何在SQL查询中创建案例语句?
您可以使用内联 if 运算符,如下所示:
var sums = from foo in db.SAMPLEs
group foo by foo.REPORT_NUMBER into groupings
orderby groupings.Key ascending
select new ReportListModel
{
ReportNbr = groupings.Key,
ReportStatus =
groupings.Select(x => x.STATE).Distinct().Count() > 1 ?
"PENDING" : (
groupings.Max(g => g.STATE) == "REPORTED" ?
"REPORTED" : "PENDING"
)
};