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

本文关键字:条件 连接 SQL 语句 LINQ 转换 查询 | 更新日期: 2023-09-27 18:01:55

这可能是普通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,我已经看到如何加入多列,但我不知道如何插入子查询到混合。如果这不是很清楚,请让我知道,我会编辑详细说明。

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

也许是这样的?

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