[LINQ] group by 여러조건 넣기.
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 |