에서
덕분에, Union
운영자는 각각의 범주를 조립하고 작동합니다 결합 만의 고유 컬렉션 행을 반환합니다.
이 항목에 대한, 나는 현재 사용자가 관리하는 모든 항목을 찾을 수 가장 효율적하고 자신이 속한 모든 컬렉션을 찾을 것이라고 생각 :
var iCollections = Items.Where(i => i.ItemManagers.Any(im => im.UserId == CurrentUserID)).SelectMany(i => Collections.Where(c => c.Items.Contains(i)));
이 다른 방법으로 할 수도 있습니다, 예
var cCollections = Collections.Where(c => c.CollectionManagers.Any(cm => cm.UserId == CurrentUserID));
: 당신이 지적했듯이, 당신은 단지 현재 사용자가 컬렉션을 관리하는 경우 모든 컬렉션을 찾을 필요가
모음에 대한
var iCollections = Collections.Where(c => c.Items.Any(i => i.ItemManagers.Any(im => im.UserId == CurrentUserID)));
: 현재 사용자에 의해 관리 항목을 포함하는 모든 컬렉션을 찾을 수
var aCollections = Accounts.Where(a => a.AccountManagers.Any(am => am.UserId == CurrentUserID)).SelectMany(a => a.Collections);
그런 다음 당신이 resu을 Union
수 있습니다 계정의 경우, 우리는 계정이 소유 현재 사용자가 관리하는 모든 계정 및 모든 컬렉션을 찾을 수 함께 LTS : 당신이 더 Collections.Where`같은 뭔가가 필요하므로
나는 가정
var CurrentUserCollections = iCollections.Union(cCollections).Union(aCollections);
'CollectionManagers' 많은에 많은의 목록입니다 (C => c.CollectionManagers.Any (A => a.UserID == CurrentUserID))'. – NetMage
당신이 이야기하고있는 엔터티 클래스의 관련 부분 (특히 탐색 속성)을 게시하면 훨씬 쉽게 당신을 도울 수 있습니다. –