如何使用 LINQ 为多对多相关 table 创建左连接查询

how to create a left join query for a many to many related table with LINQ

我在我的项目中实现了 asp.net 身份我有 3 个 tables(Users,Roles,UserRoles) 我想获取用户列表,即使他们尚未分配给任何角色基本上我想在用户和角色之间创建一个左连接这是我的数据库 tables

用户

  public class User:IdentityUser<string>
{
    public string  Name { get; set; }
    public ICollection<UserRoles> UserRoles { get; set; }

}

角色

   public class Roles:IdentityRole<string>
{
 public ICollection<UserRoles> UserRoles { get; set; }

 public Roles():base(){}

 public Roles(string roleName) : base(roleName){}

}

用户角色

   public class UserRoles:IdentityUserRole<string>
{
    
    public  User User { get; set; }
    public  Roles Role { get; set; }
}

我想得到一个 table 包含列 UserName,Mail,Name,RoleName

您不需要显式连接。一切都可以通过导航属性检索:

var query =
    from u in context.Users
    from ur in u.UserRoles.DefaultIfEmpty()
    select new
    {
        UserName = u.Name,
        Mail = u.Mail,
        RoleName = ur.Role.Name
    }