Задача состоит в том, чтобы преобразовать из цепочки методов в стандартный linq фрагмент кода, заполненный group by.
Контекст
Чтобы полностью понять тему здесь, вы можете прочитать исходный вопрос (с определениями классов, образцами данных и т. Д.): Linq: восстановить иерархические данные из упорядоченного списка
Благодаря @Akash Kava я нашел решение своей проблемы.
Формулировка цепного метода
var macroTabs = flattenedList
.GroupBy(x => x.IDMacroTab)
.Select((x) => new MacroTab
{
IDMacroTab = x.Key,
Tabs = x.GroupBy(t => t.IDTab)
.Select(tx => new Tab {
IDTab = tx.Key,
Slots = tx.Select(s => new Slot {
IDSlot = s.IDSlot
}).ToList()
}).ToList()
}).ToList();
Но, ради знания, я попытался преобразовать цепочку методов в стандартную формулировку Linq, но что-то не так.
То, что происходит, похоже на это ..
Моя попытка преобразовать его в стандартный синтаксис Linq
var antiflatten = flattenedList
.GroupBy(x => x.IDMacroTab)
.Select(grouping => new MacroTab
{
IDMacroTab = grouping.Key,
Tabs = (from t in grouping
group grouping by t.IDTab
into group_tx
select new Tab
{
IDTab = group_tx.Key,
Slots = (from s in group_tx
from s1 in s
select new Slot
{
IDSlot = s1.IDSlot
}).ToList()
}).ToList()
});