Linq to Entities EF4 - PullRequest
       1

Linq to Entities EF4

11 голосов
/ 15 августа 2011

У меня есть модель домена Groups с 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.

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

Ответы [ 2 ]

14 голосов
/ 15 августа 2011

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

var results = 
from p in AuthorizationService.UnitOfWork.Groups.FindAll() 
where 
     p.Users.Any(u => u.Id == CurrentUser.Id)
select p.Name;
0 голосов
/ 15 августа 2011

Ты не можешь пойти противоположным путем?

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...