2012-12-28 32 views
6

ユーザーは複数の役割に属し、役割には複数の権限を持つことができるデータベースがあります。どちらの関係も多くのものか​​ら多くのものになります。私はクエリをして、ユーザーが持っているRermissionsのリストを生成したい。私はこれを達成するために、役割のテーブルを照会して、ユーザーがどの役割を果たしているかを確認し、それぞれの役割に含まれる異なる権限を照会してみたいと考えています。しかし、私は正しいLINQを取得するように見えることはできません。Entity Framework多対多多対多関係の照会

var permissions = RoleRepository.Get() 
    .Where(x => x.Users.Contains(user)) 
    .Select(x => x.Permissions); 

上記のコードは、私に許可の一覧のリストを示しています。許可の一覧がほしいだけです。とにかく(LINQの)これらすべてのリストの組合をとることはありますか?または、これを達成するためのより良い方法がありますか?

+0

上記のコードは私に許可の一覧のリストを与えます、私は許可のリストがほしいですか? – Derek

+0

私は[this](http://stackoverflow.com/questions/5587288/many-to-many-query-inentity-framework-4)があなたの問題を解決すると思います。 – saber

答えて

6

使用SelectMany代わりに、SelectManyがリスト

のリストを返すクエリを平坦化するので、これを試してみてください:

var permissions = RoleRepository.Get().Where(x => x.Users.Contains(user)) 
           .SelectMany(x => x.Permissions); 

はこれが役立つことを願っています!

+0

これは、各リストを1つにまとめることです。どうもありがとう! –

関連する問題