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



我在我的项目中实现了asp.net标识我有3个表(用户、角色、用户角色(我想得到一个用户列表,即使他们没有被分配到任何角色,但基本上我想在用户和角色之间创建一个左联接,这是我的数据库表

用户

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; }
}

我想得到一个包含列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
}

最新更新