我正在使用以下方法重新排序我的dataTable列:
dataTable.Columns[int x].SetOrdinal(int y)
但是,我将它用于每一列,这对我不起作用。
例如:
dataTable.Columns[0].SetOrdinal(1);
dataTable.Columns[1].SetOrdinal(0);
进行双反转......
在我的代码中,我必须定义每列必须在哪里。
有没有解决方案?
谢谢。
答案 0 :(得分:4)
您应该从列名称数组循环更改列顺序,每个列名称在数组中按正确顺序放置。 有关更多信息,请访问以下链接:How to change DataTable columns order
答案 1 :(得分:4)
这个过程看起来很简单但并不那么容易。重点是,只要您将列的Ordinal
从x
更改为较低的序数a
(a< x),然后将所有列更改为a
和{之间的序数如果将x
更改为更高的序数x
(b> x),则{1}}将向右移动,然后b
和x
之间的所有列都会被调整将向左移动。每次更改列的序号时,我们都必须执行一些更新。
您可以按照自己想要的顺序准备列b
的列表,如下所示:
indices
或者您也可以按照自己想要的顺序准备List<int> indices = new List<int>{1,2,0,7,4,5,3,6};
for(int i = 0; i < indices.Count; i++){
dataTable.Columns[indices[i]].SetOrdinal(i);
if(indices[i] > i){
for(int j = i; j < indices.Count; j++)
if(indices[j] >= i && indices[j] < indices[i]) indices[j]++;//Right shifted
}
else if(indices[i] < i){
for(int j = i; j < indices.Count; j++)
if(indices[j] >= indices[i] && indices[j] < i) indices[j]--;//Left shifted
}
}
的列表,如下所示:
ColumnName