谁能帮助我解决我的问题。我正在使用下面给出的代码:

public IEnumerable<InvoiceHeader> Getdata(Expression<Func<InvoiceHeader, bool>> predicate)
{
    return AccountsContext.InvoiceHeaders.Include("Company").Include("Currency")
        .Include("BusinessPartnerRoleList").Include("DocumentType")
        .Where(predicate);
}

.....

在我的代码中,我使用如下
Expression<Func<InvoiceHeader, bool>> predicate = PredicateBuilder.True<InvoiceHeader>();
predicate = predicate.And(o => o.CompanyId == oInvoiceHeader.CompanyId);
List<InvoiceHeader> lstInvheader=Getdata(predicate).ToList();

通过这样做,我得到了异常(exception)。 [System.NotSupportedException]-
{“LINQ to Entities不支持LINQ表达式节点类型'Invoke'。”}

最佳答案

可以使用Joe Albahari的LINQKIT中存在的AsExpandable()方法解决此问题。他是PredicateBuilder的创建者,我看到您正在使用它。



您可以获取LINQKIT DLL here或通过NuGet软件包here进行安装。

它一定会解决您的问题,因为它已经解决了我的问题。

关于c# - Entity Framework 中的LINQ to Entities不支持LINQ表达式节点类型 'Invoke',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8741667/

10-12 07:03