Как написать вложенный запрос в Linq - PullRequest
0 голосов
/ 18 ноября 2010

у меня есть два стола

  1. usermaster
  2. AreaMaster

Мой SQL-запрос выглядит так:

select * from tblArea  where areaid
not in (select areaid from
tblUserMaster)

подскажите, пожалуйста, как написать такой вложенный запрос в linq

Ответы [ 3 ]

4 голосов
/ 18 ноября 2010
var result = tblArea.Where(x => !tblUserMaster.Any(m => m.areaid == x));
1 голос
/ 19 ноября 2010

попробуйте это

var result=from tblarea in db.TblArea
where
  !
    (from tblusermaster in db.TblUserMaster
    select new {
      tblusermaster.Areaid
    }).Contains(new { tblarea.Areaid })
select new {
  tblarea.Areaid,
  tblarea.Column1,
  tblarea.Column2
}
1 голос
/ 18 ноября 2010

Я не могу найти хорошего способа сделать что-то вроде:

var tb1 = tblUserMaster.ToList();
var result = tblArea.AsEnumerable().Where(x => !tb1.Any(m => m.areaid == x));

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

AsEnumerable () ключевое слово перемещается из linq-> sql в чистый linq, но загружает все данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...