C# 将Sql all运算符转换为linq

C# 将Sql all运算符转换为linq,c#,sql,linq,C#,Sql,Linq,我需要从另一个表输出中排除的表中检索详细信息。 以下查询成功检索到所需的输出: select * from "table1" where "table1"."Id" != All (select "table2"."table1Id" from "table2" where (*conditions*)) AND *conditions* 我希望在linq中使用相同的查询。我尝试过,但无法实现,因为我不知道如何在linq中使用all from table1 in _db.table1 wh

我需要从另一个表输出中排除的表中检索详细信息。
以下查询成功检索到所需的输出:

select * from "table1" 
where 
"table1"."Id" != All (select "table2"."table1Id" from "table2" where (*conditions*))
AND *conditions*
我希望在linq中使用相同的查询。我尝试过,但无法实现,因为我不知道如何在linq中使用all

from table1 in _db.table1
where
table1.Id != (from table2 in _db.table2 where (*conditions*))
&& *conditions*
select new class() {
                      Id = user.Id,
                      Name = user.Name
                  };  
我试过很多推荐信,但都不适合我。协助我将此sql语句转换为linq。

可能使用contains:

var q = _db.table1
 .Where(t1 => conditions)
 .Where(t1 => _db.table2.Where(t2 => conditions).All(t2 => t1.Id != t2.table1Id));
from table1 in _context.table1
where
!(from table2 in _context.table2 where (*conditions*) select table2.table1Id).Contains(table1.Id)
&& *conditions*
select new class() {
                  Id = user.Id,
                  Name = user.Name
              };  
可能使用包含:

from table1 in _context.table1
where
!(from table2 in _context.table2 where (*conditions*) select table2.table1Id).Contains(table1.Id)
&& *conditions*
select new class() {
                  Id = user.Id,
                  Name = user.Name
              };  

真正的问题:您有一个SQL,它可以工作并做您想做的事情;为什么要将其转换为LINQ?充其量,这只是添加了层和间接,以获得完全相同的结果——但更可能的是:您最终会得到一个不太理想的SQL版本,以及丑陋的C#……您能简单地告诉我,您希望通过给定的查询实现什么吗;为什么要将其转换为LINQ?充其量,这只是添加了层和间接,以获得完全相同的结果——但更可能的是:您最终会得到一个不太理想的SQL版本,以及丑陋的C#……您能简单地告诉我,您希望通过给定的查询实现什么吗?