条件不适用于加入

时间:2018-05-07 00:56:57

标签: 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
                     from ab in g.DefaultIfEmpty()
                     select new { UserName = au.UserName };

我想要的是,来自UserNames表的所有UsersSupplier表中没有UserRoles个角色。表达式中条件不起作用的地方。而User和UserRoles都是不同的表,没有任何关系

感谢Adv

1 个答案:

答案 0 :(得分:0)

我的概念是你需要添加一个

where ab == null

但是,我这样写,所以我不必担心加入的行为(复制等)

IQueryable<string> query =
  from au in db.Users
  where !au.UserRoles.Any(ur => ur.Role.Contains("Supplier"))
  select au.UserName;