C# 何处条件在联接中不起作用
我无法得到预期的结果,下面是lambda查询C# 何处条件在联接中不起作用,c#,linq,lambda,C#,Linq,Lambda,我无法得到预期的结果,下面是lambda查询 var query = from au in db.Users join auc in db.UserRoles.Where(ac => !ac.Role.Contains("Supplier")) on au.UserName equals auc.UserName into g
var query = from au in db.Users
join auc in db.UserRoles.Where(ac => !ac.Role.Contains("Supplier"))
on au.UserName equals auc.UserName
into g
from ab in g.DefaultIfEmpty()
select new { UserName = au.UserName };
我想要的是,来自用户
表的所有用户名
,它们在用户角色
表中没有供应商
角色。其中条件在表达式中不起作用。用户和用户角色都是不同的表,不存在任何关系
在Adv中感谢您我的想法是您需要添加一个
where ab == null
但是,我会这样写,这样我就不必担心连接的行为(复制等)
IQueryable查询=
从au到db.Users
哪里au.UserRoles.Any(ur=>ur.Role.Contains(“供应商”))
选择au.UserName;
用户和用户角色之间没有关系。。它们都是不同的表,计数为零定义关系:“au.UserName等于auc.UserName”
IQueryable<string> query =
from au in db.Users
where !au.UserRoles.Any(ur => ur.Role.Contains("Supplier"))
select au.UserName;