2016-10-26 7 views
0

各ユーザーに割り当てられたロールを取得してテーブルに表示するためのクエリを作成中です。エンティティは(絵のために申し訳ありません)、次のとおりです。このクエリをSQLからLINQに変換する方法

enter image description here

私はアイデンティティ.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フォームで作業しています。 おかげ

+0

http://www.sqltolinq.com/ – Naidu

+1

何を試しましたか? –

+0

私はこの ストリングクエリは= "AspNetUsers.Id LIKE AspNetUserRoles.UserId ON(AspNetRolesインナーAspNetRoles.Id LIKE AspNetUserRoles.RoleId ON AspNetUserRolesをJOIN)JOIN AspNetUsers INNER FROM AspNetUsers.Id、AspNetUsers.UserName、AspNetRoles.Name選択" しようとしました。 varユーザー= le.AspNetUsers.SqlQuery(クエリ).ToList (); –

答えて

0

のようなクリーンな構造は@広告ネット、あなたの答えをありがとう必要があります私の外来キーをチェックするのに役立ちました。正しいクエリは次のとおりです。

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

ありがとうございました。 :)

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

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} 
関連する問題