稍后在我的 EF 中,我尝试传入一个匿名函数作为我的 Linq 查询的一部分。该函数将传入一个 INT 并返回一个 BOOL(u.RelationTypeId 是一个 INT)。下面是我的函数的简化版本:
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();
}
}
但是,我收到上述错误。看起来我通过从函数构建谓词来使一切正确。有任何想法吗?谢谢。
我遇到了这个错误,并且我正在使用实体框架谓词生成器作者:Joe Albahari 打造动态where
条款。如果您碰巧遇到同样的情况,请致电AsExpandable
method:
如果查询实体框架,将最后一行更改为:
return objectContext.Products.AsExpandable().Where(predicate);
此方法是 LINQKIT DLL 的一部分,您可以获取here或通过 NuGet 包here.
现在一切正常。 :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)