0
我有以下代码(这仅仅是相关部分):选择内部LINQ选择
linqQuery.Select(invoice =>
new InvoiceDetailed
{
UnpaidAmount = e.SumAmount +
e.OverdueNotices.OrderByDescending(on => on.SendDate).Select(on => on.Fee).DefaultIfEmpty(0).Sum() +
e.CreditNotes.Select(c => c.CreditNoteAmount).DefaultIfEmpty(0).Sum() -
e.Payments.Select(p => p.Amount).DefaultIfEmpty(0).Sum()
}
而这种计算UnpaidAmount我severl其他查询重复也。我的问题是,如果有一种方法以某种方式包裹那表情像功能:
Expression<Func<crmInvoice_Invoice, double>> unpaidExpression = // that unpaid amount caluculation expression
然后调用这样的:
linqQuery.Select(invoice =>
new InvoiceDetailed
{
UnpaidAmount = unpaidExpression(invoice)
}
然后,我可以在多个查询重用。是否有可能在LINQ中做类似的事情?如果不是,有没有其他解决方案可以建议我避免重复这部分代码?
正确的,但应注意的是,这适用于OP在标签中提到的实体框架。它可以按照在IEnumerable'上运行的LINQ中的预期工作。 –
decPL