EF模型查询选择不在的地方

本文关键字:模型 查询 选择 EF | 更新日期: 2023-09-27 18:17:27

这是一个相当简单的查询,但我似乎无法在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行,所以性能是一个很大的因素。

EF模型查询选择不在的地方

像这样

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();