如何更改DataTable列的顺序
收藏

如何在C#中更改Datatable列的顺序。

例:

创建的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"});

    公众号
    关注公众号订阅更多技术干货!