EntityFramework Linq запрос - PullRequest
       6

EntityFramework Linq запрос

0 голосов
/ 14 февраля 2012

Я не могу понять, что не так со следующим запросом:

var tmp = dbset.AsEnumerable<mytable>().Where(
c=>c.Barcode.Contains("11") && c.Description.Contains("EW") );
return tmp;

Если это будет так же, как:

select * from mytable
where Barcode like '%11%' and Description like '%EW%';

Если я запускаю это на сервере SQL, я получаю четыре строки, как этодолжно быть, но не тогда, когда я запускаю запрос linq, я получаю 0 строк.

Может кто-нибудь помочь мне.Это довольно простой запрос, и он вызывает у меня такую ​​головную боль.Большое спасибо

Ответы [ 3 ]

3 голосов
/ 14 февраля 2012

Вы забыли получить данные, сделайте это:

var tmp = dbset.AsEnumerable<mytable>().Where(
c=>c.Barcode.Contains("11") && c.Description.Contains("EW") );
return tmp.ToList();

Также не звоните AsEnumerable в ближайшее время, используйте его, как показано ниже:

var tmp = ctx.mytable.Where(
                  c=>c.Barcode.Contains("11") && c.Description.Contains("EW") );
return tmp.ToList();
2 голосов
/ 14 февраля 2012
dbset.AsEnumerable<mytable>()...

Не делайте этого!

Вы заставляете все свои данные извлекаться из базы данных до проверки условия Where.

Кроме этого, не совсем понятно, почему ваш запрос не работает.Ваш синтаксис правильный.Я предполагаю, что данные на самом деле не выглядят так, как вы думаете.Либо это, либо вы ожидаете, что like %EW% будет соответствовать чему-либо без учета регистра, и поскольку LINQ для объектов оценивает предложение Where, вы не получаете такое поведение.

0 голосов
/ 14 февраля 2012

Запустить запрос только с одним condition? " c.Barcode.Contains("11") ".

Этот код должен работать нормально.

...