LINQ中带连接的子查询
我是LINQ的新手。我不知道该怎么问。请任何人告诉我如何在LINQ中转换下面的查询LINQ中带连接的子查询,linq,Linq,我是LINQ的新手。我不知道该怎么问。请任何人告诉我如何在LINQ中转换下面的查询 select * from tbldev where iddevice not in(select a.iddevice from tblUDMap a join tbldev d on a.iddevice=d.iddevice ) 试试这个: from res in tbldev where !(from a in tblUDMap join b in tbldev on a.Idde
select * from tbldev
where iddevice not in(select a.iddevice from
tblUDMap a join tbldev d
on a.iddevice=d.iddevice )
试试这个:
from res in tbldev
where !(from a in tblUDMap
join b in tbldev on a.Iddevice equals b.iddvice
into c
select c)
select res
重要的部分是否定的where
-子句。从我的角度来看,这里的连接语法可能不正确。试试这个:
from res in tbldev
where !(from a in tblUDMap
join b in tbldev on a.Iddevice equals b.iddvice
into c
select c)
select res
重要的部分是否定的
where
-子句。从我的角度来看,这里的连接语法可能是不正确的。一个简单的逐字翻译应该是这样的:
var result = from dev in context.tbldev
where (from udmap in context.tblUDMap join dev2 in context.tbldev on udmap.iddevice equals dev2.iddevice select udmap.iddevice)
.Contains(dev.iddevice) == false
select dev.iddevice;
但是你的问题很奇怪!您先删除这两个表,然后筛选出tbldev
中成功参与join的行!这意味着您需要tbldev
中不能连接到tblUDMap的行。所以写这个更简单:
var result = from dev in context.tbldev
where (from udmap in context.tblUDMap
where udmap.iddevice == dev.iddevice
).Count() == 0
select dev.iddevice;
直译和简单的逐字翻译是这样的:
var result = from dev in context.tbldev
where (from udmap in context.tblUDMap join dev2 in context.tbldev on udmap.iddevice equals dev2.iddevice select udmap.iddevice)
.Contains(dev.iddevice) == false
select dev.iddevice;
但是你的问题很奇怪!您先删除这两个表,然后筛选出tbldev
中成功参与join的行!这意味着您需要tbldev
中不能连接到tblUDMap的行。所以写这个更简单:
var result = from dev in context.tbldev
where (from udmap in context.tblUDMap
where udmap.iddevice == dev.iddevice
).Count() == 0
select dev.iddevice;
此处不需要嵌套查询:
from x in tbldev
join y in tblUDMap
on x.iddevice equals y.iddevice
into grp
where !grp.Any()
select x
这将从
tbldev
中选择所有在tblUDMap
中没有相应记录的记录。此处不需要嵌套查询:
from x in tbldev
join y in tblUDMap
on x.iddevice equals y.iddevice
into grp
where !grp.Any()
select x
这将从
tbldev
中选择所有在tblUDMap
中没有相应记录的记录。您可以将查询简化为以下内容
var query = tbldev.Where(e => !tblUDMap.Any(a => a.iddevice == e.iddevice))
您可以将查询简化为以下内容
var query = tbldev.Where(e => !tblUDMap.Any(a => a.iddevice == e.iddevice))
@卡琳:对不起!更正错误。@Kalyan抱歉!纠正了错误。