Сортировка строковых элементов в datatable как int с использованием c # - PullRequest
6 голосов
/ 27 сентября 2011

У меня есть несколько числовых кодов, хранящихся в DataTable. Когда я пытаюсь отсортировать его с помощью DataView, он сортирует столбец по строке. Какой самый простой способ сортировать данные как целое число / число?

DataView view = dt.DefaultView();
view.Sort = "Code asc";
dt = view.ToTable();

Данные в датированных данных: 128, 123, 112, 12, 126

после сортировки показывает: 112, 12, 123, 126, 128

ожидаемый результат: 12, 112, 123, 126, 128

Ответы [ 3 ]

10 голосов
/ 27 сентября 2011

Вот рабочий пример. Вы можете создать другой DataTable через Clone, изменить тип данных столбца на Int и скопировать данные.

    DataTable dt = GetTable(); // Assume this method returns the datatable from service      
    DataTable dt2 = dt.Clone();
    dt2.Columns["Code"].DataType = Type.GetType("System.Int32");

    foreach (DataRow dr in dt.Rows)
    {
        dt2.ImportRow(dr);
    }
    dt2.AcceptChanges();
    DataView dv = dt2.DefaultView;
    dv.Sort = "Code ASC";
2 голосов
/ 01 декабря 2012

Один из вариантов - добавить вычисляемый столбец с нужным типом и отсортировать по нему.

Например:

dt.Columns.Add( "Int32_Code", typeof( int ), "Code" );
dt.DefaultView.Sort("Int32_Code");
dt = dt.DefaultView.ToTable();
2 голосов
/ 27 сентября 2011

Когда вы создаете столбец в таблице данных, определите его как typeof (int)

dt.Columns.Add("Code", typeof(int));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...