在解决这个问题时遇到了一些麻烦,我有一个我在 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);
report.BiggestMoverUp =
(bigUp.Member.Title + " " + bigUp.Member.Forename + " " + bigUp.Member.Surname + " - ID " + bigUp.Member.MemberID).Trim();
report.BiggestMovementDown = tranOrder.Last().Sum(o => o.TransactionAmount);
report.BiggestMoverDown =
(bigDown.Member.Title + " " + bigDown.Member.Forename + " " + bigDown.Member.Surname + " - ID " + bigDown.Member.MemberID).Trim();