对DataTable进行分组和排序 [英] Group and Sort DataTable

查看:483
本文介绍了对DataTable进行分组和排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,



我在数据表中有一个DB对象列表。

Hi All,

I am having a list of DB objects in a datatable.

ID ObjectType, ObjectName
1 StoredProcedure, usp_getList
2 Table, tbl_Users
3 Function, udf_getNames
4 View, v_Changes 
5 Table, tbl_Admin
6 Function, udf_SplitString





我需要按每个对象类型对它们进行分组,然后根据对象名称对它进行排序。



I need to group them by each object type and then sort it according to the object name.

ID ObjectType, ObjectName
1 Function, udf_getNames
2 Function, udf_SplitString
3 StoredProcedure, usp_getList
4 Table, tbl_Admin
5 Table, tbl_Users
6 View, v_Changes 





我尝试了以下代码,但似乎无法正常工作





I tried the following code, but it seems not working

DataView dv = new DataView(tbl);
           dv.Sort = "ObjectType ASC";

           var groupbyfilter = from d in tbl.AsEnumerable() group d by d["ObjectType "];
           foreach (var x in groupbyfilter)
               x.CopyToDataTable(tbl, LoadOption.OverwriteChanges);





请帮忙解决此问题。在此先感谢。



Please help resolve this. Thanks in advance.

推荐答案

试试这个:

Try this:
DataTable dt = new DataTable();
DataColumn ID = new DataColumn();
ID.ColumnName = "ID";
ID.DataType = System.Type.GetType("System.Int32");
ID.AutoIncrement = true;
ID.AutoIncrementSeed = 1;
ID.AutoIncrementStep = 1;

dt.Columns.Add(ID);
dt.Columns.Add("ObjectType", typeof(string));
dt.Columns.Add("ObjectName", typeof(string));

DataTable copy = tbl.Copy();
copy.Columns.Remove("ID");
copy.DefaultView.Sort = "ObjectType" + " " + "ASC";
copy = copy.DefaultView.ToTable();

foreach(DataRow drow in copy.AsEnumerable())
{
    dt.ImportRow(drow);
}



现在你可以使用dt作为数据视图的来源。


Now you can use dt as source for your dataview.


这篇关于对DataTable进行分组和排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆