2011-08-15 9 views
11

엔티티에 나는 특정 사용자가 속한 모든 그룹을 얻으려고 노력 오전 그룹 도메인 name, desc와 모델 (그룹에 속하는) users의 수집는 Linq에 EF4

있습니다. 내가 쿼리

Cannot compare elements of type 'System.Collections.Generic.ICollection`1'. Only primitive types (such as Int32, String, and Guid) and entity types are supported. 

어떤 도움이 appreciated.Thanks 인을 실행하려고 할 때 다음과 같은 오류를 얻을 수

var results = from p in AuthorizationService.UnitOfWork.Groups.FindAll() 
          where 
           (p.Users != null && p.Users.Select(u => u.Id).Contains(CurrentUser.Id)) 
          select p.Name; 

: 이것은 내 LINQ 문입니다!

+0

마지막으로 포함 된 절을 삭제하고 선택 항목으로 감싸 주시겠습니까? – Rig

+0

리그, 쿼리가 어떻게 생겼는지 보여 줄 수 있습니까? – Lavan

답변

14

어쨌든 느린로드 사용자 개체에 대한 null 테스트를 제거하면 사용자가 가상입니까? 그렇다면 게으름로드 중입니다. 그러면 null 테스트를 제거해도됩니다.

var results = 
from p in AuthorizationService.UnitOfWork.Groups.FindAll() 
where 
    p.Users.Any(u => u.Id == CurrentUser.Id) 
select p.Name; 
+0

마이클, 같은 오류가 발생했습니다 – Lavan

+0

마이클, null 테스트 제거 실제로 작동했습니다. – Lavan

+0

'p.Users! = null'을 제거해 보셨습니까? –

0

반대 방향으로 갈 수 없습니까?

var results = AuthorizationService.UnitOfWork.Users.Include("Groups").First(u => u.ID == CurrentUser.Id).Select(u => u.Groups); 

희망이 있습니다.

+0

감사의 말,하지만 나는 기존 모델을 변경할 수 없습니다. – Lavan