c# - EF 模型查询 SELECT WHERE NOT IN

标签 c# .net linq entity-framework

这是一个相当简单的查询,但我似乎无法在 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/

相关文章:

c# - LINQ - ToString ("N2") 无一异常(exception)地失败?

c# - UWP 用户控件 + 内容控件

c# - 了解 C# 中类的访问说明符

c# - 以管理员身份启动进程,不使用 UseShellExecute?

c# - 验证应用程序是否正在运行,如果没有则启动它

Linq-to-NHibernate OrderBy 不工​​作

linq - Linq 是如何工作的(在幕后)?

c# - 获取特定文化的 DateTime.DayOfWeek

c# - 是否可以通过在运行时选择不同的 .net 框架来在一台机器上运行应用程序?

c# - 指定从 proc COM 对象实例化时要使用的单元状态