如何分组然后转动数据

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (5)

我正在尝试分组然后转动一些数据以显示在asp.net视图上。

这是我的View Model类。

public class myModel
{

    public string id { get; set; }
    public string fund{ get; set; }
    public string account{ get; set; }
    public string amount{ get; set; }

}

这是从数据库返回的示例数据

id   fund       account   amt
1     101       1001      25.70
2     101       1001      10.00
3     101       1001      12.00
4     101       1002      -5.0
5     201       2001      12.00
6     201       2001      11.00

现在我有一个查询返回上面的数据并将其映射到上面提到的模型。基本上我有一个带有上述数据的对象列表。

现在我想对这些数据进行分组和求和,并在我的视图中显示如下。

fund
    account      sum of all amt
    account       sum of all amt
fund
    account       sum of all amt
    account       sum of all amt

所以像


101
   1001      47.00
   1002      -5

   ....
201
   2001   23

and so on


我该怎么做呢?

我有一个如上所述的对象列表。

我正在考虑创建另一个类,并将它们映射到它,但我可能会让它变得比它需要的更复杂

public class pivot
{
        public string fund { get; set; }
        public List < pivotdetail >detail{ get; set; }
 }

public class pivotdetail
{
       pretty obvious
}




关于我如何做到这一点的任何想法或我应该接近这个?

提问于
用户回答回答于

您正在创建一个分组分组。首先,在最深层次上进行分组,然后将这些群体分组,以获得您想要的结构。

from x in Data
group x.Amount by new { x.Fund, x.Account } into g
group new
{
    g.Key.Account,
    Amount = g.Sum(),
} by g.Key.Fund

请注意,这通常效率低下,因为它会为每个组创建新查询。您可能希望将其限制为对数据库的单个分组调用以及代码中的进一步分组。

from g in (from x in Data
          group x.Amount by new { x.Fund, x.Account } into g
          select new
          {
            g.Key.Fund,
            g.Key.Account,
            Amount = g.Sum()
          }).AsEnumerable()
group new
{
    g.Account,
    g.Amount,
} by g.Fund;

扫码关注云+社区

领取腾讯云代金券