C# LINQ查询,以按升序或降序排列类别的金额总和

C# LINQ查询,以按升序或降序排列类别的金额总和,c#,linq,model-view-controller,C#,Linq,Model View Controller,我有一个带有事务列表的模型。 每笔交易都有类别和交易金额 在“我的视图”页面中,我正在根据模型创建一个表,该模型在表的每一行中显示: 类别1-交易金额总和1 类别2-交易金额总和2 类别3-交易金额总和3 我能够做到这一点。但是,如何按SumofTransactionAmounts的升序/降序对行进行排序 @foreach (var item in Model.MyTransactions.groupby(x => x.Category).ToList()) { <tr>

我有一个带有事务列表的模型。 每笔交易都有类别和交易金额

在“我的视图”页面中,我正在根据模型创建一个表,该模型在表的每一行中显示:

类别1-交易金额总和1

类别2-交易金额总和2

类别3-交易金额总和3

我能够做到这一点。但是,如何按SumofTransactionAmounts的升序/降序对行进行排序

    @foreach (var item in Model.MyTransactions.groupby(x => x.Category).ToList())
{
<tr>
<td>@item.key</td>
<td>@Model.MyTransactions.Where(x => x.Category == item.key).ToList().Sum(x => x.TransactionAmount)</td>
</tr>
}
@foreach(Model.MyTransactions.groupby(x=>x.Category.ToList()中的var项)
{
@item.key
@Model.MyTransactions.Where(x=>x.Category==item.key).ToList().Sum(x=>x.TransactionMount)
}

您可以通过如下方式对IEnumerable进行排序来实现:

@foreach (var item in Model.MyTransactions.GroupBy(x => x.Category).OrderBy(g => g.ToList().Sum(i => i.TransactionAmount)))
{
    <tr>
        <td>@item.key</td>
        <td>@item.ToList().Sum(x => x.TransactionAmount)</td>
    </tr>
}
@foreach(Model.MyTransactions.GroupBy(x=>x.Category.OrderBy(g=>g.ToList().Sum(i=>i.transactionmount))中的var项)
{
@item.key
@item.ToList().Sum(x=>x.TransactionMount)
}

在Razor页面中创建类似这样的本地列表

@{var ListItems = (Model.MyTransactions.groupby(x => x.Category).select(item => new {
    Category = item.key,
    Sum = item.Sum(x => x.TransactionAmount)
}).OrderBy(e=> e.Sum).ToList();}
ForEach中使用它

@foreach (var item in ListItems)
{
    <tr>
    <td>@item.Category</td>
    <td>@item.Sum</td>
    </tr>
}
@foreach(ListItems中的变量项)
{
@项目.类别
@项目.总数
}

通过这种方式,您可以访问页面上的任何位置的列表项

这里的技巧是
选择组信息、
总和
,并在
foreach
语句中应用
顺序
。(我在手机上,所以我无法向您提供完整的示例)请参考Razor视图中的create local List(创建本地列表)以按类别分组,然后在该ListerAgent上使用
foreach
。非常感谢。