gpt4 book ai didi

c# - .NET - 按内部列表 SUM 排序列表

转载 作者:太空宇宙 更新时间:2023-11-03 13:51:47 25 4
gpt4 key购买 nike

在正确执行此操作时遇到了一些麻烦,我有一个交易列表,我在 LINQ 中按账户分组,现在为我提供了所有账户的可枚举性,每个账户都有可枚举的交易记录。我现在想获取该列表,并按每个组的交易总和对其进行排序,但它似乎不起作用,这是我目前所拥有的:

var memberTrans = trans.GroupBy(o => o.ShareAccountId);
var transOrdered = memberTrans.OrderByDescending(o => o.Sum(i => i.TransactionAmount));

我的想法是,我可以执行 .First() 并获取在此期间净增幅最高的账户,然后执行 .Last() 以获得净增幅最低的账户。

假设我有如下数据(简体)

  • 账户 1:300
  • 账户 1:-300
  • 帐户 2:100
  • 帐户 3:50
  • 账户 2:-20

所以第一个分组给了我:

帐户 1:

  • 转化率:300
  • 转化率:-300

帐户 2:

  • 转化率:100
  • 转化率:-20

账户 3:

  • 转化率:50

现在我想按每个组内交易的总和来排序,所以我们有列表:

帐户 2:

  • 转化率:100
  • 转化率:-20

账户 3:

  • 转化率:50

帐户 1:

  • 转化率:300
  • 转化率:-300

希望已经足够清楚了,非常感谢任何帮助!

编辑:为清晰起见,添加更多代码:


var tranOrder = trans.GroupBy(o => o.ShareAccountId).OrderByDescending(g => g.Sum(t => t.TransactionAmount));



 var bigUp = tranOrder.First().First();
var bigDown = tranOrder.Last().First();
report.BiggestMovementUp = tranOrder.First().Sum(o => o.TransactionAmount);
报告.BiggestMoverUp =
(bigUp.Member.Title + ""+ bigUp.Member.Forename + ""+ bigUp.Member.Surname + "- ID "+ bigUp.Member.MemberID).Trim();
report.BiggestMovementDown = tranOrder.Last().Sum(o => o.TransactionAmount);
报告.BiggestMoverDown =
(bigDown.Member.Title + ""+ bigDown.Member.Forename + ""+ bigDown.Member.Surname + "- ID "+ bigDown.Member.MemberID).Trim();

最佳答案

  var v = (from acc in accs
group acc by acc.ShareAccountId into g
orderby g.Sum(x => x.TransactionAmount) descending
select g.Sum(x => x.TransactionAmount));

应该就可以了,你可以在选择中做任何你想做的事。我也测试过这个。

关于c# - .NET - 按内部列表 SUM 排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13514070/

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