【发布时间】:2010-11-18 06:49:05
【问题描述】:
我有两张桌子
- 用户管理员
- 区域管理员
我的sql查询是这样的:
select * from tblArea where areaid
not in (select areaid from
tblUserMaster)
请告诉我如何在 linq 中编写这样的嵌套查询
【问题讨论】:
我有两张桌子
我的sql查询是这样的:
select * from tblArea where areaid
not in (select areaid from
tblUserMaster)
请告诉我如何在 linq 中编写这样的嵌套查询
【问题讨论】:
var result = tblArea.Where(x => !tblUserMaster.Any(m => m.areaid == x));
【讨论】:
我找不到任何可以执行以下操作的好方法:
var tb1 = tblUserMaster.ToList();
var result = tblArea.AsEnumerable().Where(x => !tb1.Any(m => m.areaid == x));
但这不是一个好方法,最好编写存储过程而不是将所有数据加载到客户端。可能有人可以做得更好,但我认为它无法改进。
AsEnumerable() 关键字从 linq->sql 移动到纯 linq,但它会加载所有数据。
【讨论】:
试试这个
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
}
【讨论】: