我有以下的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