如何将基于子查询的多个连接条件的SQL语句转换为LINQ

时间:2011-07-13 22:31:47

标签: c# sql linq linq-to-sql join

这可能是普通SQL命令优于LINQ的情况之一。这是我正在尝试翻译的SQL语句的简化版本:

SELECT * FROM IDTable AS idt 
INNER JOIN NameTable AS nt ON nt.IDTableID=idt.Id 
         AND nt.Id= (SELECT TOP(1) Id 
                     FROM NameTable AS nt2 
                     WHERE nt2.IDTableID=11 ORDER BY nt2.DateInserted DESC) 

我有LINQ查询在连接ID时拉取记录,我已经看到如何连接多个列,但我不知道如何将子查询插入混合。 如果这还不完全清楚,请告诉我,我会编辑以详细说明。

1 个答案:

答案 0 :(得分:1)

也许是这样的?

var results = from id in db.IDTable
              join n in db.NameTable on id.Id equals n.IDTableID
              where n.Id = (
                  from n2 in db.NameTable
                  where n2.IDTableID = 11
                  orderby n2.DateInserted desc
                  ).First()
              select new { id, n };