我正在进行查询以获取分配给每个用户的角色并将其显示在表格上。实体是(对不起图片):
我正在处理提供Identity .net的数据库结构。 SQL查询如下:
SELECT AspNetUsers.Id, AspNetUsers.UserName, AspNetRoles.Name
FROM AspNetUsers
INNER JOIN
(AspNetRoles INNER JOIN AspNetUserRoles
ON AspNetRoles.Id LIKE AspNetUserRoles.RoleId)
ON AspNetUsers.Id LIKE AspNetUserRoles.UserId
我想在LINQ中转换该查询,或者有人知道以其他方式获取用户在表中显示的角色? 我在Asp.NET Web Forms工作。 感谢
答案 0 :(得分:2)
您可以尝试使用此工具:http://www.sqltolinq.com/
答案 1 :(得分:1)
如果外键设置正确,您可以这样做:
var result = from u in AspNetUsers select new
{
Id = u.Id, UserName = u. UserName,
Roles = u.AspNetUserRoles.Select(r=>r.Name)
}
你会有一个更清洁的结构,如
{Id, UserName, IEnumerable<string>Roles}
答案 2 :(得分:0)
var Users = le.AspNetUsers.Include("AspNetUserRoles").ThenInclude("AspNetRoles").ToList();
aspnet用户可以分配多个角色。您可以使用linq Select
方法获取特定属性并将其映射到新对象。
http://www.dotnetlearners.com/linq/linq-to-sql-writing-select-query.aspx
答案 3 :(得分:0)
谢谢@ad-net,你的回答帮我检查了我的外键。正确的查询是:
var result = from u in le.AspNetUsers
select new
{
Id = u.Id,
UserName = u.UserName,
Correo = u.Email,
Roles = u.AspNetRoles.Select(r => r.Name)
};
感谢大家的回答。 :)