2016-08-13 7 views
0

私はこのようになりますすべてのユーザーのクエリを持っています。しかし、今私は、特定のユーザーの役割をフィルタリングしたい。オブジェクトのHashSetであるu.AspNetRolesがあります。各オブジェクトにはロールの名前であるNameプロパティがあります。LINQクエリでHashSetを使用するには?正常に動作します</p> <pre>from u in db.AspNetUsers orderby u.UserName select ....</pre> <p>:

Nameのロールオブジェクトを持つユーザーのみを選択し、"SuperAdmin"にしたいとします。

以前はロールデータを使用してテーブルに参加しようとしましたが、主キーのないUserIDとRoleIDしか持たないAspNetUserRolesテーブルが存在するため、これは機能しませんでした。おそらく、プライマリキーを持たないテーブルのエンティティクラスを作ることは勧められません。

+0

ちょうど明白である:あなたは役割 "SuperAdmin"にいるユーザーだけを見つけたいですか? – DWright

+0

はい、それは正しいです。 – Ryan

答えて

2

私は、これはあなたが求めているものだと思うん:コレクション内の項目のいずれかが(この場合はr => r.Name == "SuperAdmin"、)基準ラムダを満たしている場合

from 
    u in db.AspNetUsers 
where 
    u.AspNetRoles.Any(r => r.Name == "SuperAdmin") 
orderby 
    u.UserName 
select 
    . . . 

Anyメソッドはtrueを返します。ユーザーオブジェクトuのコレクションAspNetRolesのアイテムにの値があり、値が"SuperAdmin"の場合、Anyという結果がtrueになります。いずれの項目も基準を満たしていない場合、Anyはfalseを返します。

+0

ありがとう、ちょうど私が後だった。 – Ryan

関連する問題

 関連する問題