简体   繁体   English

如何将此查询从SQL转换为LINQ

[英]How to convert this query from SQL to LINQ

I'm working on a query to get the role assigned to each user and display it on a table. 我正在进行查询以获取分配给每个用户的角色并将其显示在表上。 The entities are (sorry for the picture): 实体是(抱歉图片):

在此处输入图片说明

I am dealing with the structure of the database which provides Identity .net. 我正在处理提供Identity .net的数据库的结构。 The SQL query came out as follows: 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

I'd like to convert that query in LINQ or someone knows any other way to obtain the user's role for display in a table? 我想在LINQ中转换该查询,还是有人知道任何其他方法来获取要在表中显示的用户角色? I'm working in Asp.NET Web Forms. 我正在使用Asp.NET Web窗体。 Thanks 谢谢

您可以尝试使用此工具: http : //www.sqltolinq.com/

If foreign keys are set up properly, you can do this: 如果正确设置了外键,则可以执行以下操作:

var result = from u in AspNetUsers select new 
                {
                   Id = u.Id, UserName = u. UserName,
                   Roles = u.AspNetUserRoles.Select(r=>r.Name)
                }

You'll have a cleaner structure like 您将拥有一个更干净的结构,例如

          {Id, UserName, IEnumerable<string>Roles}
var Users = le.AspNetUsers.Include("AspNetUserRoles").ThenInclude("AspNetRoles").ToList();

aspnet users can have more than one role assigned. aspnet用户可以分配多个角色。 You can use linq Select method to get specific properties and map it to a new object. 您可以使用linq Select方法获取特定属性并将其映射到新对象。
http://www.dotnetlearners.com/linq/linq-to-sql-writing-select-query.aspx http://www.dotnetlearners.com/linq/linq-to-sql-writing-select-query.aspx

Thank you @ad-net, your answer helped me to check my foreign keys. 谢谢@ ad-net,您的回答帮助我检查了我的外键。 The correct query is: 正确的查询是:

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

Thanks to all for your answers. 感谢大家的回答。 :) :)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM