我一直在搜索一整天都找不到解决这个问题的方法...
我有一个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”)。
我究竟做错了什么??