我这样做但是它不起作用(不要编译),我需要GroupBy然后是OrderBy。
lstOrderItems.OrderBy(x => x.itemPrice).GroupBy(p => p.CatID);
答案 0 :(得分:3)
var Result = lstOrderItems.GroupBy(p=> p.CatID).Select(group => group.OrderByDescending(d=> d.itemPrice));
答案 1 :(得分:3)
你在这里有一个理解的问题。如果你进行分组,你将拥有一个可以使用的属性:密钥。
我将带有产品表的northwind数据库作为参考。如果您按CategoryId Products.GroupBy (p => p.CategoryID)
对产品进行分组,则可以添加OrderBy。但是,之后您可以订购的唯一属性是关键:
//p.Key is the CategoryId after which you grouped by
Products.GroupBy (p => p.CategoryID).OrderBy (p => p.Key)
您需要做的是选择分组并使用它:
Products.GroupBy (p => p.CategoryID).Select (p => p.OrderBy (x => x.UnitPrice))
如果您想展平结果,请使用SelectMany
:
Products.GroupBy (p => p.CategoryID).SelectMany (p => p.OrderBy (x => x.UnitPrice))
修改的
澄清Select / SelectMany问题:这是您使用Select
获得的内容。返回类型为IOrderedQueryable<IOrderedEnumberable<Products>>
。实质上是列表中的List。
如果您使用SelectMany()
,则将列表中的此列表展平为一个列表