代码之家  ›  专栏  ›  技术社区  ›  Dr. Rajesh Rolen

如何在Linq中编写嵌套查询

  •  0
  • Dr. Rajesh Rolen  · 技术社区  · 15 年前

    我有两张桌子

    1. 用户主机
    2. 区域管理员

    我的sql查询如下:

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

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

    3 回复  |  直到 15 年前
        1
  •  4
  •   Cheng Chen    15 年前
    var result = tblArea.Where(x => !tblUserMaster.Any(m => m.areaid == x));
    
        2
  •  1
  •   Saeed Amiri    15 年前

    我找不到任何好的方法你可以这样做:

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

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

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

        3
  •  1
  •   Raymund    15 年前

    试试这个

    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
    }