gpt4 book ai didi

C# Lambda OrderByDescending 和 Sum

转载 作者:太空宇宙 更新时间:2023-11-03 18:04:18 26 4
gpt4 key购买 nike

我想按数量总和的降序对值列表进行排序,而不覆盖数量的原始值。

因此,假设我的数据列表是:

Reason=Quality, Quantity=10
Reason=Quality, Quantity=10
Reason=Customer, Quantity=8
Reason=Carrier, Quantity=17
Reason=Customer, Quantity=1

我将如何执行 lambda 表达式来按总量对这些进行排序?我希望得到以下信息:

Reason=Quality, Quantity=10
Reason=Quality, Quantity=10
Reason=Carrier, Quantity=17
Reason=Customer, Quantity=8
Reason=Customer, Quantity=1

质量第一,因为总值(value)是20。客户排在最后,因为总值(value)为 1。

这就是我目前得到的,但无论如何都无法在不修改原始数据的情况下对数据求和

eData.OrderByDescending(o => o.Quantity);

我能想到的完成此任务的唯一方法是添加另一个变量,然后使用 Select 和 Sum 将其全部添加到新变量上,然后对该值进行 OrderByDescending。但是,我只想看看在我这样做之前是否有更简单的方法。

最佳答案

您可以按原因对项目进行分组,然后按每个组内数量的总和对组进行排序,然后使用将组展平为单个项目>SelectMany.

var result =
eData
.GroupBy(x => x.Reason)
.OrderByDescending(g => g.Sum(x => x.Quantity))
.SelectMany(g => g)
.ToList();

关于C# Lambda OrderByDescending 和 Sum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39006197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com