如何在Linq中编写嵌套查询

时间:2010-11-18 06:49:06

标签: c# sql linq

我有两张桌子

  1. usermaster
  2. AreaMaster
  3. 我的SQL查询是这样的:

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

    请告诉我如何在linq中编写这样的嵌套查询

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

我找不到任何好办法,比如:

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

但这不是一个好方法,最好编写存储过程而不是将所有数据加载到客户端。可能有人可以做得更好,但我认为无法改善。

AsEnumerable()关键字从linq-> sql转移到纯linq,但它会加载所有数据。

答案 2 :(得分:1)

尝试这个

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
}