Я использую GroupBy для создания иерархического набора групп для использования в нескольких дочерних сетках.GroupBy с несколькими группами в качестве иерархии
Предположим, у меня есть запрос с 6 столбцами, a, b, c, d, e, f.
Теперь мне нужно сгруппировать по a, затем по b, затем c. и вернуть всю строку в группе c.
var q = rows.GroupBy(x => x.a)
Хорошо, это хорошо. Это дает мне мою группу. Затем мы будем группировать их по а и b.
var q1 = q.Select(g =>new {
Key = g.Key,
SubGroup = g.GroupBy(x => x.b)
}
Хорошо, это также хорошо работает. Я получаю свою группу с подгруппами b.
Теперь я в тупике на третьем уровне. Я пробовал различные синтаксисы, но большинство даже не компилируется. Те, которые делают, не дают правильных результатов.
var q2 = q1.Select(g1 => new {
Key = g1.Key,
SubGroup = g1.GroupBy(x => x.c)
}
Это не скомпилировано. Сообщает, что Group1 не существует на g1.
var q2 = q.Select(g1 => new {
Key = g1.Key,
SubGroup = g1.GroupBy(x => x.c)
}
Это не дает мне подгруппу b, только a и c.
Любая идея о том, что я делаю неправильно здесь?
EDIT:
Этот также не работает, говоря, что нет определения для 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)
})
У меня есть такое плохое понимание о том, что это делает внутренне.
г просто список ваших сущностей и вы говорите g.select, который дает вам объект, но у него нет ключа –
Да, я получаю это. Я просто не соединяю точки и выясняю, что это за решение. –