2012-12-28 31 views
6

Tôi có cơ sở dữ liệu trong đó Người dùng có thể thuộc nhiều Vai trò và Vai trò có thể có nhiều Quyền. Cả hai mối quan hệ rất nhiều. Tôi muốn truy vấn và tạo ra một danh sách các Rermissions một User có. Tôi đang cố gắng thực hiện điều này bằng cách truy vấn bảng Roles để xem Vai trò của Người dùng là thành viên của và sau đó tôi muốn truy vấn và xem Điều gì khác biệt Quyền mỗi Vai trò chứa. Tuy nhiên tôi không thể có vẻ để có được LINQ chính xác.Khung thực thể Truy vấn quan hệ Nhiều đến Nhiều người

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

Mã trên cung cấp cho tôi danh sách quyền, tôi chỉ muốn danh sách quyền. Có anyway (trong LINQ) để có sự kết hợp của tất cả các danh sách này? Hoặc là có một cách tốt hơn để thực hiện điều này?

+0

Mã trên cung cấp cho tôi danh sách các quyền, tôi chỉ muốn danh sách quyền? – Derek

+0

Tôi nghĩ [this] (http://stackoverflow.com/questions/5587288/many-to-many-query-in-entity-framework-4) sẽ giải quyết vấn đề của bạn. – saber

Trả lời

6

Sử dụng SelectMany Thay vào đó, SelectMany flattens truy vấn mà trở lại danh sách các danh sách

Vì vậy, Hãy thử điều này:

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

Hy vọng điều này sẽ giúp !!

+0

Vâng làm phẳng từng danh sách thành một. Cảm ơn rất nhiều! –

Các vấn đề liên quan