如何使用Linq从父列表中选择和分组复杂的子对象。
我有一个 OrderList 每个订单对象都有一个 OrderProductVariantList (OrderLineList),而每个 OrderProductVariant 对象都有ProductVariant,然后是 ProductVariant 对象将包含产品对象,其中包含产品信息。
我的目标是从订单列表中选择和分组最受欢迎的产品。
任何人都可以帮我吗?
非常感谢。
答案 0 :(得分:3)
您的描述很难理解,但我认为您只是希望了解产品并按发生次数对其进行排名。 SelectMany将对此有所帮助。
var query = orderList.SelectMany( o => o.OrderLineList )
// results in IEnumerable<OrderProductVariant>
.Select( opv => opv.ProductVariant )
.Select( pv => p.Product )
.GroupBy( p => p )
.Select( g => new {
Product = g.Key,
Count = g.Count()
});
答案 1 :(得分:1)
查询不是结果。要查看结果,您可以遍历query
对象:
foreach (var result in query) {
Console.WriteLine(result);
}
至于为什么查询在监视窗口中不可用,我只能想象它要么尚未在范围内,要么已经超出了范围。尝试在您分配给查询的行所在行之后立即在该行上放置断点。