zah*_*bas 23 c# linq expression entity-framework predicate
任何人都可以帮助我解决我的问题.我使用下面给出的代码:
public IEnumerable<InvoiceHeader> Getdata(Expression<Func<InvoiceHeader, bool>> predicate)
{
return AccountsContext.InvoiceHeaders.Include("Company").Include("Currency")
.Include("BusinessPartnerRoleList").Include("DocumentType")
.Where(predicate);
}
Run Code Online (Sandbox Code Playgroud)
.....
在我的代码中我使用如下
Expression<Func<InvoiceHeader, bool>> predicate = PredicateBuilder.True<InvoiceHeader>();
predicate = predicate.And(o => o.CompanyId == oInvoiceHeader.CompanyId);
List<InvoiceHeader> lstInvheader=Getdata(predicate).ToList();
Run Code Online (Sandbox Code Playgroud)
通过这样做,我得到了例外.[System.NotSupportedException] --- {"LINQ to Entities中不支持LINQ表达式节点类型'Invoke'."}
Linq to EF 查询被转换为 SQL。该异常意味着运行时无法将您的代码转换为 SQL 查询,因为 SQL 不支持它。
您可以更改代码以省略 SQL 不支持的部分,或者您可以先通过调用 .AsEnumerable() 从数据库中提取数据,如下所示,然后您可以执行所有操作,因为它是 Linq-to-Objects
public IEnumerable<InvoiceHeader> Getdata(Expression<Func<InvoiceHeader, bool>> predicate)
{
return AccountsContext.InvoiceHeaders.Include("Company").Include("Currency")
.Include("BusinessPartnerRoleList").Include("DocumentType")
.AsEnumerable()
.Where(predicate);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19581 次 |
| 最近记录: |