如何使用 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
}
我在我的项目中实现了 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
}