2012-12-28 13 views
6

Mam bazę danych, w której użytkownicy mogą należeć do wielu ról, a role mogą mieć wiele uprawnień. Obie relacje są od wielu do wielu. Chcę zapytania i wygenerować listę Rermisji, które posiada Użytkownik. Próbuję tego dokonać, wysyłając zapytanie do tabeli ról, aby zobaczyć, do jakich ról Użytkownik jest członkiem, a następnie chcę zapytać i zobaczyć, jakie są różne uprawnienia każdej z ról. Jednak nie mogę uzyskać poprawnego LINQ.Entity Framework Zapytanie do wielu do wielu relacji

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

Powyższy kod daje mi listę listy uprawnień, chcę tylko listę uprawnień. Czy istnieje (w LINQ), aby zjednoczyć wszystkie te listy? Czy istnieje lepszy sposób na osiągnięcie tego?

+0

Powyższy kod daje mi listę listy uprawnień, chcę tylko listę uprawnień? – Derek

+0

Myślę, że [this] (http://stackoverflow.com/questions/5587288/many-to-many-query-in-entity-framework-4) rozwiąże Twój problem. – saber

Odpowiedz

6

Zastosowanie SelectMany Zamiast SelectMany spłaszcza zapytań zwracających list list

Więc spróbuj tego:

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

nadzieję, że pomoże !!

+0

Tak, że spłaszczyć każdą listę w jeden. Wielkie dzięki! –

Powiązane problemy