这是一个相当简单的查询,但我似乎无法在 EF 中完成它。
C# 相当于:
SELECT A1, A2 from TABLEA WHERE A3 NOT IN ( SELECT B1 FROM TABLEB WHERE ... )
AND A4 IN ( SELECT C2 FROM TABLEC WHERE .... )
我更愿意在数据库上运行查询,因为 tableB
有 > 5000000
行,因此性能是一个重要因素。
最佳答案
像这样
var b1s = from b in TableB
where ...
select b.B1;
var c2s = from c in TableC
where ...
select c.C2;
var a1sAndA2s = from a in TableA
where !b1s.Contains(a.A3)
&& c2s.Contains(a.A4)
select new {
a.A1,
a.A2
};
要查看正在生成的 SQL 语句,您可以使用 SQL 语句跟踪器(不要在名称上引用我,但它内置在 VS2010 中)或通过 String
获取语句
String sqlStatement = (a1sAndA2s as ObjectQuery).ToTraceString();
关于c# - EF 模型查询 SELECT WHERE NOT IN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8450081/