【发布时间】:2018-11-24 08:45:48
【问题描述】:
SELECT ra.ResidentID, ra.RoomID, r.Number, ra.StartDate, p.FacilityID
FROM(
SELECT ResidentID, MAX(StartDate) AS max_start
FROM RoomAssignments
GROUP BY ResidentID
) m
INNER JOIN RoomAssignments ra
ON ra.ResidentID = m.ResidentID
AND ra.StartDate = m.max_start
INNER JOIN Rooms r
ON r.ID = ra.RoomID
INNER JOIN Person p
ON p.ID = ra.ResidentID
inner join ComplianceStage cs
ON cs.Id = p.ComplianceStageID
ORDER BY ra.EndDate DESC
我试图弄清楚如何使用 LINQ 将其转换为 C#。我是 C# 和 LINQ 的新手,无法让我的子查询正确触发。你们哪位巫师有机会帮我打开灯吗?
更新-----------------
我想我已经掌握了它的要点,但是在查询最大开始日期时遇到了问题:
var maxQuery =
from mra in RoomAssignments
group mra by mra.ResidentID
select new { mra.ResidentID, mra.StartDate.Max() };
from ra in RoomAssignments
join r in Rooms on ra.RoomID equals r.ID
join p in Persons on ra.ResidentID equals p.ID
where ra.ResidentID == maxQuery.ResidentID
where ra.StartDate == maxQuery.StartDate
orderby ra.ResidentID, ra.StartDate descending
select new {ra.ResidentID, ra.RoomID, r.Number, ra.StartDate, p.FacilityID}
【问题讨论】:
-
这是一个非常有用的链接。谢谢。
-
您可能会发现我的SQL to LINQ Recipe 也很有帮助。
-
您的代码似乎无法编译?
标签: linq sql-to-linq-conversion