在稍后的EF中,我尝试传入一个匿名函数作为Linq查询的一部分。该函数将传入一个整数并返回一个BOOL (u.RelationTypeId是一个整数)。下面是我的函数的简化版本:
public IEnumerable<UserBandRelation> GetBandRelationsByUser(Func<int, bool> relation)
{
using (var ctx = new OpenGroovesEntities())
{
Expression<Func<UsersBand, bool>> predicate = (u) => relation(u.RelationTypeId);
var relations = ctx.UsersBands.Where(predicate);
// mapping, other stuff, back to business layer
return relations.ToList();
}
}
然而,我得到了上面提到的错误。通过从函数构建一个谓词,似乎我做的一切都是正确的。有什么想法吗?谢谢。
发布于 2015-10-26 18:49:11
您可以在Where
请求之前在predicate
上调用Expand()
方法。
发布于 2013-05-11 00:24:06
我知道这个答案真的很晚,但我遇到了同样的问题,它把我带到了这里,所以我想我应该分享我的解决方案。
我读了Leniel的答案,它给了我一个想法。默认类型具有"AsEnumerable()“方法,该方法的行为相同,从而缓解了该问题。
https://stackoverflow.com/questions/5284912
复制相似问题