我想知道是否可以使用 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
像这样的东西?
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 中,您将键和任何元素作为键的子级(分层形状)。要进行透视,您必须将层次结构投影回您选择的行/列形式。
GroupBy