huangshuwei / blog

🈲黄书伟的个人博客
54 stars 8 forks source link

DataTable 分组查询 #18

Open huangshuwei opened 5 years ago

huangshuwei commented 5 years ago

前言

现在都流行匿名类,很少创建实体对象。当 DataTable 数据需要进行分组查询时,还是比较繁琐的。

DataTable 数据结构

id name type
1 abc 分组1
2 dsad 分组1
3 121 分组1
4 das 分组1
5 afdfbc 分组2
6 rgrfdsad 分组3

将DataTable 数据根据 type 字段分组

IEnumerable<IGrouping<string, DataRow>> groupResult = dt.Rows.Cast<DataRow>().OrderBy<DataRow, string>(dr => dr["type"].ToString()).GroupBy<DataRow, string>(dr => dr["type"].ToString());

            var groupList = new List<object>();

            foreach (IGrouping<string, DataRow> gr in groupResult)
            {
                // 获取当前分组数据
                var groupType = gr.Key;

                var groupListItem = new List<object>();
                foreach (var dr in gr)
                {
                    var row = new
                    {
                        id = dr["id"].ToString(),
                        name = dr["name"].ToString()
                    };

                    groupListItem.Add(row);
                }
                groupList.Add(new
                {
                    groupType,
                    groupListItem
                });
            }