小编典典

是否可以使用 LINQ 透视数据?

all

我想知道是否可以使用 LINQ 从以下布局中透视数据:

CustID | OrderDate | Qty
1      | 1/1/2008  | 100
2      | 1/2/2008  | 200
1      | 2/2/2008  | 350
2      | 2/28/2008 | 221
1      | 3/12/2008 | 250
2      | 3/15/2008 | 2150

变成这样的东西:

CustID  | Jan- 2008 | Feb- 2008 | Mar - 2008 |
1       | 100       | 350       |  250
2       | 200       | 221       | 2150

阅读 63

收藏
2022-08-03

共1个答案

小编典典

像这样的东西?

List<CustData> myList = GetCustData();

var query = myList
    .GroupBy(c => c.CustId)
    .Select(g => new {
        CustId = g.Key,
        Jan = g.Where(c => c.OrderDate.Month == 1).Sum(c => c.Qty),
        Feb = g.Where(c => c.OrderDate.Month == 2).Sum(c => c.Qty),
        March = g.Where(c => c.OrderDate.Month == 3).Sum(c => c.Qty)
    });

GroupBy在 Linq 中的工作方式与 SQL 不同。在 SQL 中,您可以获得键和聚合(行/列形状)。在 Linq
中,您将键和任何元素作为键的子级(分层形状)。要进行透视,您必须将层次结构投影回您选择的行/列形式。

2022-08-03