我有以下SQL查询:
Select *
from aspnet_Users
where UserId Not in
(select UN.ConnectedToUserID
from tblUserNetwork UN )
and UserId <> '82522f05-2650-466a-a430-72e6c9fb68b7'
LINQ与此SQL的等效内容是什么。
由于
答案 0 :(得分:2)
这将是Northwind数据库的类似查询, 它不包括伦敦的客户和客户ID ALFKI
var query =
from c in Customers
where c.CustomerID != "ALFKI" &&
!(from cc in Customers
where cc.City == "London"
select cc.CustomerID)
.Contains(c.CustomerID)
select c;
转置到您的查询上,
var query =
from c in aspnet_Users
where c.UserId != "82522f05-2650-466a-a430-72e6c9fb68b7" &&
!(from cc in tblUserNetwork
select cc.ConnectedToUserID)
.Contains(c.UserId)
select c;
答案 1 :(得分:1)
试试这个:
aspnet_Users.Where(s => tblUserNetwork
.Where(t => s.UserId == t.ConnectedToUserID).Count() == 0)
.Select(s => s);
编辑:另外,我想:
aspnet_Users.Where(s => tblUserNetwork
.Where(t => s.UserId == t.ConnectedToUserID).Count() == 0
&& s.UserId != '82522f05-2650-466a-a430-72e6c9fb68b7')
.Select(s => s);
答案 2 :(得分:1)
这是使用Join和Except运算符的不同方法:
var connectedUsers = aspnetUsers
.Join(networkUsers, a => a.UserId, n => n.UserId, (a, n) => a);
var exceptions = aspnetUsers
.Where(a => a.UserId == "82522f05-2650-466a-a430-72e6c9fb68b7")
.Union(connectedUsers);
var query = aspnetUsers.Except(exceptions);