[C#] Как изменить порядок столбцов DataTable


Answers

Это основано на ответе «default locale», но до установки порядкового номера он удалит недопустимые имена столбцов. Это связано с тем, что, если вы случайно отправили недопустимое имя столбца, оно будет терпеть неудачу, и если вы поместите чек, чтобы предотвратить его сбой, индекс будет неправильным, поскольку он будет пропускать индексы везде, где было допущено недопустимое имя столбца.

public static class DataTableExtensions
{
    /// <summary>
    /// SetOrdinal of DataTable columns based on the index of the columnNames array. Removes invalid column names first.
    /// </summary>
    /// <param name="table"></param>
    /// <param name="columnNames"></param>
    /// <remarks> http://stackoverflow.com/questions/3757997/how-to-change-datatable-colums-order</remarks>
    public static void SetColumnsOrder(this DataTable dtbl, params String[] columnNames)
    {
        List<string> listColNames = columnNames.ToList();

        //Remove invalid column names.
        foreach (string colName in columnNames)
        {
            if (!dtbl.Columns.Contains(colName))
            {
                listColNames.Remove(colName);
            }
        }

        foreach (string colName in listColNames)
        {
            dtbl.Columns[colName].SetOrdinal(listColNames.IndexOf(colName));
        }
}
Question

Как изменить порядок столбцов Datatable в c #.

Пример:

я создал тип таблицы таблицы sql: Qty, Unit, Id, но в программе DataTable - Id, Qty, Unit. В коде Behind am напрямую передаются данные DataTable в таблицу sql, поэтому порядок таблицы отличается.

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

Пожалуйста помоги