我对选择...有疑问
var applicationUser = unitOfWork.ApplicationUsers.GetAll().Include(i => i.ApplicationUserRoles).ThenInclude(i => i.ApplicationRole)
.Where(i => i.UserName.ToUpper() == userName.ToUpper())
.Select(i => new
{
i.Email,
i.FirstName,
i.LastName,
i.PhoneNumber,
i.ImageUrl,
i.JoinedDate,
i.DateOfBirth,
i.ApplicationUserRoles
})
.FirstOrDefault();
我无法在选择中获得ApplicationRole的使用方式吗?
答案 0 :(得分:1)
如果将投影与@And("^Wait for \"([^\"]*)\" minutes$")
public void waitForMintues(long time){
//Thread.sleep() or webdriver.manage().timeouts().implicitlyWait(time, TimeUnit.SECONDS)
//click some button
}
一起使用,则无需使用Select
。只需选择值。要通过UserRoles获取角色,您需要Include
来检索角色:
Select
您可以通过从应用程序角色中仅选择所需的角色详细信息来进一步完善此操作...
var applicationUser = unitOfWork.ApplicationUsers.GetAll()
.Where(i => i.UserName.ToUpper() == userName.ToUpper())
.Select(i => new
{
i.Email,
i.FirstName,
i.LastName,
i.PhoneNumber,
i.ImageUrl,
i.JoinedDate,
i.DateOfBirth,
ApplicationRoles = i.ApplicationUserRoles.Select(x => x.ApplicationRole).ToList()
})
.FirstOrDefault();
如果您希望获得最多1个结果,我建议使用 // ...
ApplicationRoles = i.ApplicationUserRoles.Select(x =>
x.ApplicationRole.Select(ar => new { ar.RoleId, ar.RoleName })).ToList()
而不是SingleOrDefault
。 FirstOrDefault
/ First
应该始终与FirstOrDefault
/ OrderBy
条件一起使用,以确保可预测的结果。
答案 1 :(得分:0)
如果我可以用于ApplicationRoles,它正在工作
.Select(i => new
{i.Email,i.FirstName,i.LastName,i.PhoneNumber,i.ImageUrl,i.JoinedDate,i.DateOfBirth,
ApplicationRoles = i.ApplicationUserRoles.Select(x => x.ApplicationRole).ToList(),
})
我不能为ApplicationUserRoles使用它如何工作?
public class ApplicationUserSummary
{
public DateTime JoinedDate { get; set; }
public string ImageUrl { get; set; }
public string Email { get; set; }
public string PhoneNumber { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime? DateOfBirth { get; set; }
public ICollection<ApplicationRole> ApplicationRoles { get; set; }
public ICollection<ApplicationUserRole> ApplicationUserRoles { get; set; }
}