본문 바로가기

.NET/C#

Linq없인 못살아(group by with nested group by)

일을하다가 데이터를 Gruop by하고 또 그안에서 Group by해야하는 경우가 생겼다. 그래서 아래와 같이했다.


from
 item in results                                         group item by item.Category1Nm into g                                         select new RepeaterData                                         {                                             ID = SummaryByGradeList.Where(d=>d.CategoryName.Contains(g.Key)).Select(d=>d.ID).FirstOrDefault(),                                             Average = GetAbsolueValue(g.Average(d => d.Value ?? 0)),                                             AnalysisResult = (from grade in SummaryByGradeList//결과분석                                                               from detail in 
grade.SummaryByGradeList                                                               where grade.CategoryName.Contains(g.Key)                                                               && detail.StartPoint <= GetAbsolueValue(g.Average(d => d.Value ?? 0))                                                               && detail.EndPoint >= GetAbsolueValue(g.Average(d => d.Value ?? 0))                                                               select detail.Summary).FirstOrDefault(),                                             PointsByCategory = (from t in g//서브카테고리변 점수                                                                group t by t.Category2Nm into g2                                                                 select new DetailRepeater                                                                {                                                                    CategoryName = g2.Key,                                                                    Point = GetAbsolueValue(g2.Average(d => d.Value ?? 0))                                                                }).ToList()
간단하게 설명해 보겠다.
빨갛게 된 첫부분은 어떤 List<T> 타입에 대해 T 안에 또 List<T>타입이 있는 것이다.
애석하게도
SummaryByGradeList.Where(d=>d.SummaryByGradeList.Where(x=>x.ttt == "aaaa")) 이런건 안된다.
그리하여 빨갛게 되는 부분으로 처리했다.
내가 모르는건가?  

그리고 두번째 빨갛게 되는 부분은 g로 group by된 넘을 다시 Category2Nm으로 group by한 넘이다.

필요하신 분들은 그냥 긁어서 써보면 좋을듯하다. 대신 알고서^^;