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