如何在LINQ中按月汇总数据?

时间:2012-07-30 11:25:02

标签: c# sql linq

  

可能重复:
  How to present data in different format in LINQ

我在datatable中有以下格式的数据

DATA IN TABLE:

 DEVICEID   PRODUCTCODE  MONTH NO      QTY      VENDAMT
----------- ----------- ----------- ------------------- ---- -------
    2032     100            06           9        270
    2032     101            06           4        120
    2032     102            06           1         30
    2032     100            07          10        300
    2032     101            07           8        240
    2032     102            07           9        270

我想在C#

中使用LINQ查询以下列格式显示它
 DEVICEID    PRODUCTCODE JUN_QTY JUN_AMT JUL_QTY JUL_AMT
----------- ----------- ----------- ------------------- ---- -------
2032          100             9  270       10      300
2032          101             4  120       8       240
2032          102             1  30        9       270

我尝试了这个查询:

var query2 = from p in tempDt222.AsEnumerable()
             select new {
                 DEVICEID= p.Field<Int32>("DEVICEID"), 
                 PRODUCTCODE = p.Field<String>("PRODUCTCODE"),
                 JAN_QTY = (p.Field<String>("MONTH_NO") == "01" ? p.Field<Int32>("QTY") : 0),
                 JAN_AMT = (p.Field<String>("MONTH_NO") == "01" ? p.Field<Int32>("VENDAMT") : 0),
                 ...
                 DEC_AMT = (p.Field<String>("MONTH_NO") == "12" ? p.Field<Int32>("VENDAMT") : 0)
              };

提前致谢。

1 个答案:

答案 0 :(得分:0)

你需要在你的月份没有专栏申请GroupBy。

然后,您需要编写一些代码来格式化输出,以便行中的月份数值显示为文本列标题。