我有以下的Linq查詢...如何在Linq方法語法中捕獲變量?
Proposals.OrderByDescending (p => p.ID)
.First()
.Proposal_ProductConfigurations
.Select(ppc => ppc.ProductConfigurationHistory)
.Where(pch => pch.Active)
.Select(pch => pch.ProductConfiguration)
.Where(pc => pc.Active)
.SelectMany(pc => pc.ProductConfigurations_PriceBookEntries)
.Where(pcpb => pcpb.Active)
.OrderBy(pcpb => pcpb.PriceBook.ProductCode)
.GroupBy(pcpb => pcpb.PriceBook.ID)
.Select (pcpb => new {
Code = pcpb.First().PriceBook.ProductCode,
Description = pcpb.First().PriceBook.Description,
Quantity = pcpb.Sum (pcpb1 => (pcpb1.Quantity ?? 0)),
})
...這是不完全正確,因爲ppc.Quantity實體有需要在最後一行中使用的數量屬性。
我真正想要做的東西線這...
Quantity = pcpb.Sum (pcpb1 => (pcpb1.Quantity ?? 0) * ppc.Quantity),
...但我當然不能,因爲PPC不在範圍內。
我將如何捕獲ppc.Quantity並在最後一行中使用它?我認爲這可以通過流暢的語法來完成,但我從不使用它,並且沒有設法產生編譯器喜歡的任何代碼!
這Linq讓我的大腦受到傷害。你正在一行中遍歷似乎是非常複雜的對象結構。你有沒有考慮過把它分解成幾個步驟?順便說一句,它會讓你在先前的步驟中保存'ppc'(不管是什麼),然後在最後重新使用它。 – Vlad274