C# 何处条件在联接中不起作用

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

我无法得到预期的结果,下面是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
                     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;