【发布时间】:2018-10-11 15:40:31
【问题描述】:
Linq group by 与 SQL 非常不同(因为它可以处理对象而不仅仅是元组),并且一开始并不那么直观。我很想写一个小函数把它放在像 MoreLinq 这样的框架中。
样本数据
假设我们有一个带有匿名类型的 c# List 或一个带有 3 个“列”的 DataReader。
你可以找到这个样本数据here on Fiddle。
第一列分组
var grouping = from x in flattenedList
group x by x.IDMacroTab
into grouping_0
select new
{
IdMacrotab = grouping_0.Key,
Data = (from y in grouping_0
select new { IDTab = y.IDTab, IDSlot = y.IDSlot })
};
结果
这就是结果:类似表格的数据被拆分为新的 {Key + Data},其中属性数据包含除分组中使用的列之外的所有列。
这种操作可以泛化吗?
var grouping = flattenedList.GroupColumnsBy(s => s.IDMacroTab);
【问题讨论】: