我试图进行分组,然后将一些数据透视以显示在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
}
关于如何做到这一点的任何想法,或者我应该如何处理?
答案 0 :(得分:0)
您正在创建分组分组。首先,在最深层进行分组,然后对上层进行分组以获得所需的结构。
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;