2017-03-14 33 views
0

hello stackoverflow社区,这是我的第一个问题在堆栈溢出。提前感谢您的帮助。 请帮助加入2个表,其中一个表具有其主要关键字为ids的专业列表,而第二个表具有3列包含特殊ID作为外部关键字。如何加入多个列只有一个外键使用LINQ

如果你想返回专家的数据提供商,这将工作这是我的代码

var q = (from u in db.Providers 
         join v in db.PracticeSpeciality 
         on new { p1 = u.prSpecId1, p2 = u.prSpecId2, p3 = u.prSpecId3 } 
         equals new { p1 = v.pracSpecId, p2 = v.pracSpecId, p3 = v.pracSpecId } 
         where (u.prId == pc.stprId) 
         select new 
         { 
          u.prFname, 
          u.prLname, 
          u.prMI, 
          u.prTitle, 
          v. 
         }).FirstOrDefault(); 
+1

如果将代码放在问题的正文中,而不是链接的图片,会更好。我怀疑任何人都会花时间重写你的查询 - 复制/粘贴ftw。 – sleeyuen

+0

进一步检查你的代码 - 在where子句中引用的实体'pc'是什么?也许这是问题的一部分? – sleeyuen

+0

感谢您的指导@sleeyuen – usmanali

回答

0

var q = (from prov in providers 
      join esp1 in praEspec on prov.prSpecId1 equals esp1.pracSpecId 
      join esp2 in praEspec on prov.prSpecId2 equals esp2.pracSpecId 
      join esp3 in praEspec on prov.prSpecId3 equals esp3.pracSpecId 
      where prov.prId == pc.stprId 
      select new 
      { 
      esp1, 
      esp2, 
      esp3 
      }).FirstOrDefault();