首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >“LINQ to Entities不支持LINQ表达式节点类型'Invoke‘”- stumped!

“LINQ to Entities不支持LINQ表达式节点类型'Invoke‘”- stumped!
EN

Stack Overflow用户
提问于 2011-03-13 03:32:38
回答 2查看 53.1K关注 0票数 72

在稍后的EF中,我尝试传入一个匿名函数作为Linq查询的一部分。该函数将传入一个整数并返回一个BOOL (u.RelationTypeId是一个整数)。下面是我的函数的简化版本:

代码语言:javascript
复制
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();
    }
}

然而,我得到了上面提到的错误。通过从函数构建一个谓词,似乎我做的一切都是正确的。有什么想法吗?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2015-10-26 18:49:11

您可以在Where请求之前在predicate上调用Expand()方法。

票数 4
EN

Stack Overflow用户

发布于 2013-05-11 00:24:06

我知道这个答案真的很晚,但我遇到了同样的问题,它把我带到了这里,所以我想我应该分享我的解决方案。

我读了Leniel的答案,它给了我一个想法。默认类型具有"AsEnumerable()“方法,该方法的行为相同,从而缓解了该问题。

票数 -7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5284912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档