퇴근5분전


Chart 질문에 답변을 했었는데...

질문하셨던분이 아래와 같은 쿼리에 힌트를 주셔서... 아싸! 레어템... 

전에 LINQ에 그룹바이 조건에 여러개를 어떻게 넣나 고민하다가 많이 안쓰는 관계로 미뤘었고,
Chart  구현시에도 그룹바이를 좀 다르게 썼었는데... 

조금더 고민하면 한번에 그룹바이로 안되려나?

  DataTable dt = new DataTable();
            dt.Columns.Add("YM");
            dt.Columns.Add("ID");
            dt.Columns.Add("CNT", typeof(double));
            dt.Rows.Add("2010-10", "홍", 4d);
            dt.Rows.Add("2010-10", "홍", 3d);
            dt.Rows.Add("2010-10", "이", 1d);
            dt.Rows.Add("2010-09", "홍", 2d);
            dt.Rows.Add("2010-09", "이", 5d);


            var tmp = from j in
                          (from o in dt.AsEnumerable()
                           group o by new { ID = o.Field<string>("ID"), YM = o.Field<string>("YM") } into k
                           select new
                           {
                               Key = k.Key.YM,
                               CNT1 = k.Sum(R => k.Key.ID == "홍" ? Convert.ToDouble(R.Field<object>("CNT")) : 0),
                               CNT2 = k.Sum(R => k.Key.ID == "이" ? Convert.ToDouble(R.Field<object>("CNT")) : 0)
                           })
                      group j by new { Key = j.Key  } into T
                      select
                      new {
                        Key = T.Key,
                        CNT1 = T.Sum( R => R.CNT1 ),
                        CNT2 = T.Sum(R => R.CNT2),
                      };


결과로 그룹바이 된 컬럼으로 나타남. 

[ 년도 , CNT1 , CNT2 ] 


그룹바이를 두번해야되긴 하지만... 

그 나마 많이 줄었다..
 

'# 3) .Net ( Vs 2008 ) > C#' 카테고리의 다른 글

vs2008] WMI 관련..  (0) 2011.08.16
노트북 셋팅..  (0) 2011.08.02
MS-Chart Demo  (0) 2010.11.05
포스트 잇 처럼 메모하는 레이아웃!!  (0) 2010.09.30
Ms Access 사용하기 예제소스.  (0) 2010.08.11