【发布时间】:2013-01-14 23:33:10
【问题描述】:
针对特殊要求,我们创建了自己的 HTML 表格,它的工作方式类似于网格视图。它从 DataTable 中获取数据并填充 TD 和 TR 单元格
我们希望像网格视图一样实现分组功能,我们在其中指定列名并将所有值分组。
如何直接在 DataTable 中进行分组,然后按原样输出行?我可以使用 Linq 吗?请通过指向示例来提供帮助。
【问题讨论】:
针对特殊要求,我们创建了自己的 HTML 表格,它的工作方式类似于网格视图。它从 DataTable 中获取数据并填充 TD 和 TR 单元格
我们希望像网格视图一样实现分组功能,我们在其中指定列名并将所有值分组。
如何直接在 DataTable 中进行分组,然后按原样输出行?我可以使用 Linq 吗?请通过指向示例来提供帮助。
【问题讨论】:
您可以尝试使用 AsEnumerable 将您的 DataTable 转换为 IEnumerable(确保添加对 System.Data.DataSetExtensions 的引用)。
然后使用GroupBy 对您的数据进行分组。它将返回IEnumerable<IGrouping<TKey, TSource>>,其中每个IGrouping<TKey, TElement> 对象包含一个对象集合和一个键。示例:
var groups = dt.AsEnumerable().GroupBy( r => r.Field<string>("someField") );
更新: 您可以使用多个字段 (see example) 或嵌套它们 (see example) 进行分组
【讨论】: