如何在一次查询中获取User和User Role信息?



我有一个像下面这样的模型

public class User
{
public int UserID { get; set; }
public string FirstName { get; set; } = string.Empty;
public string LastName { get; set; } = string.Empty;
public string? Phone { get; set; } = string.Empty;
[Key]
public string Email { get; set; }
public virtual UserRole Role { get; set; }
[ForeignKey("Role")]
public int RoleID { get; set; }
}
public class UserRole
{
public int RoleID { get; set; }
public string RoleName {  get; set; } = String.Empty;
public ICollection<User> Users { get; set; }
}

我需要获得具有RoleName的所有用户的列表。我试了下面的,但它不工作。有人能帮我一下吗

var user = context.UserModel
.Include(x => x.Role.Select(x => x.RoleName)
.AsNoTracking()

期望输出格式

[
{
"userID": 0,
"firstName": "string",
"lastName": "string",
"phone": "string",
"email": "string",
"roleName": "string",
"roleID": 0
}
]

试试这个

var user = context.UserModel
.Select(x => new UserModel
{
UserId = x.UserID,
FirstName = x.FirstName,
LastName = x.LastName,
Phone = x.Phone,
Email = x.Email,
RoleName = x.Role.RoleName,
RoleID = x.Role.RoleID,
})
.ToList();

最新更新