c# - 如何更改 DataTable 列的顺序

标签 c# datatable

如何在 C# 中更改数据表列的顺序。

例子:

我创建的 sql 表类型顺序是 Qty、Unit、Id,但在程序中 DataTable 顺序是 Id、Qty、Unit。在后面的代码中,我直接将 DataTable 传递给 sql 表类型,因此表顺序不同。

DataTable columns are: `Id,Qty,Unit.`  I want this to be: `Qty,Unit,Id` 

请帮忙

最佳答案

尝试使用 DataColumn.SetOrdinal方法。例如:

dataTable.Columns["Qty"].SetOrdinal(0);
dataTable.Columns["Unit"].SetOrdinal(1); 

更新:这个答案受到的关注比我预期的要多得多。为了避免混淆并使其更易于使用,我决定为 DataTable 中的列排序创建一个扩展方法:

扩展方法:

public static class DataTableExtensions
{
    public static void SetColumnsOrder(this DataTable table, params String[] columnNames)
    {
        int columnIndex = 0;
        foreach(var columnName in columnNames)
        {
            table.Columns[columnName].SetOrdinal(columnIndex);
            columnIndex++;
        }
    }
}

用法:

table.SetColumnsOrder("Qty", "Unit", "Id");

table.SetColumnsOrder(new string[]{"Qty", "Unit", "Id"});

关于c# - 如何更改 DataTable 列的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3757997/

相关文章:

c# - POST 上的模型为空

c# - 多态性和转换问题

jsf - PrimeFaces DataTable 选择在dialog.show() 上变为空

c# - 插件 dll C# wpf 中字符串的本地化

C# 如何为多个按钮使用一个单击事件处理程序

c# - LINQ 查询改进

jquery - 过滤数据中的数据表过滤器下拉选项

vb.net - 创建具有多个表的(循环中)数据集

javascript - jQuery DataTable fnDestroy 重新格式化表

可编辑所有记录的 ASP.NET Gridview