对DataTable进行分组和排序 [英] Group and Sort DataTable
本文介绍了对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屋!
查看全文