我在名为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());