Весь день ищу и не могу найти решение этой проблемы...
У меня есть EntityCollection
из Communication
объектов, каждый из которых имеет экземпляр объекта Intention
(один к одному).
У меня также есть объект User
, который имеет много экземпляров UserLocation
EntityObjects
(один ко многим)
Intention
объекты имеют свойствоUID
.UserLocation
объектов имеют свойствоLID
.Я хочу написать выражение LINQ, которое возвращает все объекты
Communication
, где свойствоUID
экземпляраIntention
, связанного с объектомCommunication
, равно ЛЮБОМу свойствуLID
ЛЮБОГО экземпляра экземпляраUserLocation
для объектаUser
.
я пробовал это
return _context.Communications.Where
(u => u.Intention.UID.Equals
(user.UserLocations.Select
(p => p.LID)));
и это
return _context.Communications.Where
(u => user.UserLocations.Any
(x => x.LID.Equals
(u.Intention.UID)));
и это
var thislist = from Intentions in _context.Intentions
join UserLocations in user.UserLocations
on Intentions.UID equals UserLocations.LID
select Intentions.UID;
return _context.Communications.Where(u => u.Intention.Equals(thislist.Any()));
и это
var lidlist = user.UserLocations.Select(x => x.LID);
return _context.Communications.Where(x=> lidlist.Contains(x.Intention.UID)).ToList();
(это дает мне ошибку в выражении «Содержит», говоря: «Делегат System.Func<Communication,int,bool>
не принимает 1 аргумент», не знаю, как исправить)
Наряду со всеми этими вариациями у меня также есть:
- изменил мой метод, чтобы вернуть
IQueryable<Communication>
, а также попробовалList<Communication>
при добавленииToList()
к моим запросам.
Ничего не работает. Независимо от того, что я пытаюсь, я всегда получаю это исключение
NotSupportedException не было обработано пользовательским кодом
Невозможно создать постоянное значение типа PreparisCore.BusinessEntities.UserLocation. В этом контексте поддерживаются только примитивные типы ("например, Int32, String и Guid").
Что я делаю неправильно??
Where(x=> lidlist.Contains(x.Intention.UID))
что-то написано неправильно, например:lidxyzlist
илиContain
илиIntenton
илиAID
или... Сообщение очень странное, потому что оно не говорит та или иная переменная/свойство не объявлены чего я и ожидал. Но если я исправлю все орфографические ошибки, он скомпилируется (и я верю, что тогда он будет работать правильно без исключения). Можешь еще раз проверить, все ли правильно написано? - person Slauma   schedule 31.07.2012x => lidlist.Contains(x.Intention.UID))
- person Matt Foxx Duncan   schedule 31.07.2012