C# 将SQL转换为具有一对多关系的Lambda表达式
我需要将以下sql表达式转换为c#lambda语法:C# 将SQL转换为具有一对多关系的Lambda表达式,c#,sql,sql-server,lambda,C#,Sql,Sql Server,Lambda,我需要将以下sql表达式转换为c#lambda语法: SELECT PatientProfiles.PatientLastName, Visits.VisitId, Visits.VisitDate, Visits.EndVisitDate FROM Visits INNER JOIN PatientProfiles ON Visits.PatientProfile_PatientId = PatientProf
SELECT PatientProfiles.PatientLastName,
Visits.VisitId,
Visits.VisitDate,
Visits.EndVisitDate
FROM Visits
INNER JOIN PatientProfiles ON
Visits.PatientProfile_PatientId = PatientProfiles.PatientId
PatientProfile\u PatientId
是就诊表中的外键<代码>患者->就诊具有一对多关系。我需要能够从就诊表中提取所有就诊以及PatientProfile父表中的患者姓名。使用
你没有提到你的数据源。这将作为表名的前缀。 但是linq join语法是直截了当的
var results = (from v in Visits
join pp in PatientProfiles on
v.PatientProfile_PatientId equals pp.PatientId
select new
{
pp.PatientLastName,
v.VisitId,
v.Visitdate,
v.EndVisitDate
})
如果您首先使用EF代码:
var result = from profile in db.PatientProfile.Include(p => p.Visit)
from visit in profile.Visits
select new
{
profile.PatientLastName,
visit.VisitId,
visit.VisitDate,
visit.EndVisitDate
};
If返回包含请求数据的匿名类型。谢谢您的评论。我对这种语法有一个问题。出于某种原因,visit.PatientProfile_PatientId以红色下划线。它不识别PatientProfile_PatientId字段(因为它的外键是一对多关系)。有什么建议吗?
var result = from profile in db.PatientProfile.Include(p => p.Visit)
from visit in profile.Visits
select new
{
profile.PatientLastName,
visit.VisitId,
visit.VisitDate,
visit.EndVisitDate
};