Я использую GroupBy для создания иерархического набора групп для использования в нескольких дочерних сетках.
Предположим, у меня есть запрос с 6 столбцами, a, b, c, d, e, f.
Теперь мне нужно сгруппировать по a, затем по b, затем по c.и вернуть всю строку в группе с.
var q = rows.GroupBy(x => x.a)
Хорошо, это хорошо.Это дает мне мою группу.Далее мы рассмотрим их группирование по a и b.
var q1 = q.Select(g =>new {
Key = g.Key,
SubGroup = g.GroupBy(x => x.b)
}
Хорошо, это тоже хорошо работает.Я получаю свою группу а с подгруппами из б.
Теперь я нахожусь в тупике на третьем уровне.Я пробовал разные синтаксисы, но большинство даже не компилируется.Те, которые не дают правильных результатов.
var q2 = q1.Select(g1 => new {
Key = g1.Key,
SubGroup = g1.GroupBy(x => x.c)
}
Это не компилируется.Говорит мне, что на g1 нет GroupBy.
var q2 = q.Select(g1 => new {
Key = g1.Key,
SubGroup = g1.GroupBy(x => x.c)
}
Это не дает мне подгруппу b, только a и c.
Любое представление о том, что я делаю неправильноздесь?
РЕДАКТИРОВАТЬ:
Следующее также не работает, говоря, что нет определения для g1.Key
var q2 = q.Select(g => new {
Key = g.Key,
SubGroup = g.Select(g1 => new {
Key = g1.Key
SubGroup = g1.GroupBy(a => a.c)
})
Я так плохо понимаю, чтоэто делается внутри.