Sql server 如何使用linq仅使用一个外键连接多个列

Sql server 如何使用linq仅使用一个外键连接多个列,sql-server,asp.net-mvc,linq-to-sql,Sql Server,Asp.net Mvc,Linq To Sql,你好,stackoverflow社区,这是我关于堆栈溢出的第一个问题。提前谢谢你的帮助。 请帮助连接两个表,其中一个表包含以其ID作为主键的专业列表,第二个表包含以外键形式包含专业ID的3列 这是我的密码 var q = (from u in db.Providers join v in db.PracticeSpeciality on new { p1 = u.prSpecId1, p2 = u

你好,stackoverflow社区,这是我关于堆栈溢出的第一个问题。提前谢谢你的帮助。 请帮助连接两个表,其中一个表包含以其ID作为主键的专业列表,第二个表包含以外键形式包含专业ID的3列

这是我的密码

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();

如果您想返回提供商的专家数据,这将起作用

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();

如果您将代码放在问题的主体中,而不是作为链接的图像,那会更好。我怀疑是否有人会花时间重写您的查询-复制/粘贴ftw。进一步检查您的代码后-您在where子句中引用的实体
pc
?也许这是问题的一部分?谢谢您的指导@sleeyuen