Подтвердить что ты не робот

Linq для объектов EF4

У меня есть модель домена групп с name, desc и набор users (принадлежащий группе)

Я пытаюсь получить все группы, к которым принадлежит определенный пользователь. Это моя инструкция LinQ:

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;

Я получаю следующую ошибку при попытке выполнить запрос

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

Любая помощь приветствуется. Спасибо!

4b9b3361

Ответ 1

Удалить нулевое тестирование для объекта "Пользователи", в любом случае он ленив загружен, является ли ваш пользователь виртуальным? если это так, он ленивый, он нормально удаляет нулевое тестирование, а затем

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

Ответ 2

Разве ты не можешь идти наоборот?

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

Надеюсь, что это поможет.