C# 将SQL转换为具有一对多关系的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

我需要将以下sql表达式转换为c#lambda语法:

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
                    };