0

私は次の表を持っています

Date              GRP                Open

1/1/2011         A                    2
1/1/2011         B                    3
2/2/2011         C                    5

グループ列は、「A + B= Y and C consititute Z」という名前のグループの一部です。

Date と GRP でグループ化された Open の合計がそれぞれ列として必要です

Date              Y     Z     

 1/1/2011         5     0
 2/2/2011         0     5

以下は私が試したコードです

List<string> Y = new List<string>() { "A", "B" };
List<string> C = new List<string>() { "Z" };
from item in temp group item by new { RD = item.Field<DateTime>("date"),
Group= 
(Y.Contains(item.Field<string>("GRP")) ? "Y" :
 C.Contains(item.Field<string>"GRP")) ? "Z" :                                                 
                              }
                                             into grptbl
                                             select new
                                             {
                                                 RD = grptbl.Key.RD,
                                               A=grptbl.Where(x=>x.Field<string>("Group")=="Y").Sum(x=>x.Field<Int64>("Open")) 
,
                 Z= grptbl.Where(x=>x.Field<string>("Group")=="Z").Sum     (x=>x.Field<Int64>("Open")) };

良さそうですが、 select 句の grptable に「グループ」列が存在しないと不平を言っています

4

1 に答える 1

0

答えた

List<string> Y = new List<string>() { "A", "B" };
List<string> C = new List<string>() { "Z" };
from l in (from item in temp group item by new { 
 RD = item.Field<DateTime>("date"),
 Y=Y.Contains(item.Field<string>("GRP")) ? "Y" :item.Field<Int64>("open") : 0,
 Z=C.Contains(item.Field<string>"GRP")) ? "Z":item.Field<Int64>("open") :0                                                 
                          }
                                         into grptbl
                                         select new
                                         {
                                             RD = grptbl.Key.RD,
                                           Y=grptbl.Key.Y,
                                           Z=grptbl.Key.Z
                                          } )
    group l by new {l.RD} into g
    {
     RD=g.Key.RD,
     Y=g.Sum(x=>x.Y),
     Z=g.Sum(x=>x.Z)};
于 2013-02-19T15:35:20.883 に答える