2012-03-10 62 views
0

我有一个数据集,看起来像这样:方法从数据集中获得的摘要视图

日期 类别 率 数量

将有0或1点的行对于每个类别对于任何给定日期。

将此数据转换为摘要类型视图的好方法是什么?

例如:

日期 Category1_Rate Category2_Rate Category3_Rate Category4_Rate

我有分类固定数量。

我正在使用linq。

这里是一个例子。如果我有这样的数据:

Date Category Rate Quantity 
1/1/12 toys  15  12 
1/1/12 games  20  20 
1/1/12 dvds  18  30 
1/2/12 toys  19  13 
1/2/12 dvds  20  17 

我想产生一个总结,看起来像这样:

Date  toys_rate games_rate dvds_rate 
1/1/12 15   20   18 
1/2/12 19   null   20 

回答

2

可能是这样的

var summarydata = 
    from r in table 
    group r by r.Date into g 
    select new 
    { 
     Date = g.Key, 
     ToysRate = g.Where(e=> e.Category == "toys").Count() > 0 ? 
         (int?)g.Where(e=> e.Category == "toys").First().Rate : null, 
     GamesRate = g.Where(e=> e.Category == "games").Count() > 0 ? 
         (int?)g.Where(e=> e.Category == "games").First().Rate : null, 
     DvdsRate = g.Where(e=> e.Category == "dvds").Count() > 0 ? 
         (int?)g.Where(e=> e.Category == "dvds").First().Rate : null 
    }; 

注意我没有测试过这种作为我目前不能访问C#环境。

编辑 - 增加了可空的int类型转换,以正确设置生成的匿名类型中各种费率字段的类型。