Linq to 实体投影到 IEnumerable
Linq to entities projection into IEnumerable
我在映射 Roles
属性 时遇到问题,因此它对应于 UserViewModel
。
var userManager = Request.GetOwinContext().GetUserManager<ApplicationUserManager>();
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
var users = (from u in userManager.Users
join r in roleManager.Roles
on u.Id equals r.Id
select new UserViewModel { Id = u.Id, Username = u.UserName, Password = u.PasswordHash, Roles = select new Role { Name = r.Name }});
public class UserViewModel
{
public string Id { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public IEnumerable<Role> Roles { get; set; }
}
public class Role
{
public string Name { get; set; }
}
我应该如何制作 Linq to Entities 投影?
我认为您设置查询的方式很可能无法正常工作您需要一个子查询,因为您需要 return 一个 item/list 列表我会做类似
由于您使用不同的上下文,您可以尝试执行以下操作
我建议你有某种 using 语句,这样你就可以清理你的内存,但你可以将它转换为 using 列表到实际的内存对象,然后过滤内存对象(只要确保你的数据不是很大)
var userManager = Request.GetOwinContext().GetUserManager<ApplicationUserManager>().Users.ToList();
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext())).Roles.ToList();
var users = (from u in userManager.Users
select new UserViewModel
{
Id = u.Id,
Username = u.UserName,
Password = u.PasswordHash,
Roles =(from r in roleManager.Roles
where r.Id==u.Id
select new Role
{
Name = r.Name
}).ToList());
我在映射 Roles
属性 时遇到问题,因此它对应于 UserViewModel
。
var userManager = Request.GetOwinContext().GetUserManager<ApplicationUserManager>();
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
var users = (from u in userManager.Users
join r in roleManager.Roles
on u.Id equals r.Id
select new UserViewModel { Id = u.Id, Username = u.UserName, Password = u.PasswordHash, Roles = select new Role { Name = r.Name }});
public class UserViewModel
{
public string Id { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public IEnumerable<Role> Roles { get; set; }
}
public class Role
{
public string Name { get; set; }
}
我应该如何制作 Linq to Entities 投影?
我认为您设置查询的方式很可能无法正常工作您需要一个子查询,因为您需要 return 一个 item/list 列表我会做类似
由于您使用不同的上下文,您可以尝试执行以下操作 我建议你有某种 using 语句,这样你就可以清理你的内存,但你可以将它转换为 using 列表到实际的内存对象,然后过滤内存对象(只要确保你的数据不是很大)
var userManager = Request.GetOwinContext().GetUserManager<ApplicationUserManager>().Users.ToList();
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext())).Roles.ToList();
var users = (from u in userManager.Users
select new UserViewModel
{
Id = u.Id,
Username = u.UserName,
Password = u.PasswordHash,
Roles =(from r in roleManager.Roles
where r.Id==u.Id
select new Role
{
Name = r.Name
}).ToList());