EF Model Query ВЫБРАТЬ ГДЕ НЕ В - PullRequest
       1

EF Model Query ВЫБРАТЬ ГДЕ НЕ В

1 голос
/ 09 декабря 2011

Это довольно простой запрос, но я не могу выполнить его в 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 строк, поэтому производительность является важным фактором.

1 Ответ

7 голосов
/ 09 декабря 2011

Как это

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...