【发布时间】:2018-10-11 10:12:20
【问题描述】:
挑战在于将一段充满分组依据的代码从方法链转换为标准 linq。
上下文
要完全理解这里的主题,您可以阅读原始问题(带有类定义、示例数据等):Linq: rebuild hierarchical data from the flattened list
感谢@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()
});
LinqPad 中的结果
NetFiddle 上的类和示例数据:
【问题讨论】:
标签: c# linq method-chaining