首先明确一点,DataTable不支持排序。
在一个DataTable(dt)中已经存在无序数据,要实现排序,我想到了两个方法:
方法一:
可以先构造一个列表(list),按排序顺序存储dt主键列的值; 然后主要是利用DataTable.Merge方法
1 StrongTypedDataTable tempDt;
2 //使tempDt具有dt的Schema 和 Constraint
3 tempDt = new StrongTypedDataTable();
4 foreach(string key in list)
5 {
6 //如果某些列不允许空,则NewRow()->赋key值->再Add(dr).
7 tempDt.Rows.Add(key, null.);
8 }
9 //合并后将维持tempDt中的顺序
10 tempDt.Merge(dt);
11 dt = tempDt;
2 //使tempDt具有dt的Schema 和 Constraint
3 tempDt = new StrongTypedDataTable();
4 foreach(string key in list)
5 {
6 //如果某些列不允许空,则NewRow()->赋key值->再Add(dr).
7 tempDt.Rows.Add(key, null.);
8 }
9 //合并后将维持tempDt中的顺序
10 tempDt.Merge(dt);
11 dt = tempDt;
方法二:
思路:DataView支持排序,而DataView对象有方法ToTable,没有尝试过,已经理解ToTable原理或有机会用到的人给个答案吧:)
p.s 猪年第一篇post.