将n-m关系连接查询转换为Linq

时间:2014-12-17 18:37:24

标签: c# linq join

我有三张桌子:

table patient 
{ NID *pk
  Name
  Family
 }

 table disease 
 {
   ICD_code *pk
   Title
 }

 table_patient_disease *-*
 {
  ID
  Fk_ICDcode
  FK_Patient
 }

这是患者和疾病之间的n-m关系。 我想写一个查询来选择患者及其疾病 它需要加入linq

Sql纯查询是:

SELECT     
  dbo.Table_Disease.*, 
  dbo.Table_PatDis.*, 
  dbo.Table_Patient.*
FROM         
  dbo.Table_Disease 
 INNER JOIN dbo.Table_PatDis ON dbo.Table_Disease.ICD_code = dbo.Table_PatDis.FK_Disease
 INNER JOIN dbo.Table_Patient ON dbo.Table_PatDis.FK_PAtient = dbo.Table_Patient.NID

Linq的声明是什么?

1 个答案:

答案 0 :(得分:3)

SELECT     
  dbo.Table_Disease.*, 
  dbo.Table_PatDis.*, 
  dbo.Table_Patient.*
FROM         
  dbo.Table_Disease 
 INNER JOIN dbo.Table_PatDis ON dbo.Table_Disease.ICD_code = dbo.Table_PatDis.FK_Disease
 INNER JOIN dbo.Table_Patient ON dbo.Table_PatDis.FK_PAtient = dbo.Table_Patient.NID

会变成:

var results = (from d in DbContext.Table_Disease 
               join pd in DbContext.Table_PatDis on d.ICD_Code equals pd.FK_Disease
               join p in DbContext.Table_Patient on pd.FK_PAtient equals p.NID
              select new {d, pd, p});