我在名为Invoice的类中有此方法:

public static Expression<Func<Invoice, bool>> IsAllocated()
{
    return i => i.TotalAmountDue == i.GetAllocationsTotal();
}


我有一个这样的清单:

IQueryable<Invoice> invoices


我需要像这样过滤它(Linq到Entity):

var filteredInvoices = invoices.Where(i => Invoice.IsAllocated());


在这一行中,我遇到两个错误:


  无法解析方法...候选对象是....一个在Enumerable中,另一个在Queryable中。


并且:


  无法将表达式类型Expression<Func<Invoice,bool>>转换为
  返回类型“布尔”


我尝试了很多在SO中发现的事情,但是没有运气。有人可以说出这里或至少缺少什么,这两个错误中的哪个是问题的根源?

最佳答案

您的方法已经返回了适当的表达式树-您只需要调用它,而无需在lambda表达式中调用它:

var filteredInvoices = invoices.Where(Invoice.IsAllocated());

10-08 00:49