我有两个表:Patients 和 PatientVisits。一个 Patient 可以进行多次访问。 C#中有对应的Model类。
我将如何编写 Linq 查询来获取每位患者及其最近就诊日期?
执行此操作的原始 SQL 是:
select max(p."FirstName"), max(p."LastName"), max(pv."VisitDate")
from "Patients" p
left outer join "PatientVisits" pv ON pv."PatientID" = p."ID"
group by p."ID"
最佳答案
var answer = (from p in context.Patients
join v in context.PatientVisits on p.ID equals v.PatientID into subs
from sub in subs.DefaultIfEmpty()
group sub by new { p.ID, p.FirstName, p.LastName } into gr
select new
{
gr.Key.FirstName,
gr.Key.LastName,
VisitDate = gr.Max(x => x == null ? null : (DateTime?)x.VisitDate)
}).ToList();
关于c# - 加入具有一对多关系的两个表并从多个方面选择最新的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54460057/