Сортировка столбцов DataTable в порядке ASCII, а не - PullRequest
2 голосов
/ 20 апреля 2009

Если у меня есть две строки, и мне нужно сравнить их в порядке ASCII (вместо порядка инвариантной культуры), я обычно могу использовать:

int c = String.Compare(a, b, StringComparison.Ordinal);

Если у меня есть DataTable, и я хочу, чтобы один из столбцов был отсортирован с использованием обычного сравнения строк для DataView, как мне это сделать?

Ответы [ 2 ]

1 голос
/ 20 апреля 2009

К сожалению, в DataView нет ничего встроенного для упрощения пользовательской логики сортировки; это была одна из моих главных жалоб и одна из причин, по которой мы решили применить свой собственный уровень доступа к данным на моей старой работе.

Хотя я не знаю, насколько это возможно для вас, для реального достижения этого вам нужно добавить еще один столбец в таблицу как int, а затем отсортировать строки в массиве на основе вашего собственного сравнения. логики, затем сохраните индекс в массиве в вашем столбце int. Тогда вместо упорядочения по столбцу string по столбцу int.

Однако я признаю, что это не удовлетворяет таким вещам, как автоматическая сортировка, которая выполняется GridView, и не учитывает изменения в данных, которые происходят после того, как вы вычислите позиции сортировки. К сожалению, я не думаю, что есть что-то, что действительно может помочь с этим.

Если вы хотите отсортировать это визуально, проверьте и убедитесь, что ваш визуальный элемент управления поддерживает специальный механизм сортировки. Это все, что я могу предложить.

0 голосов
/ 14 января 2011

Если возможно, когда вы создаете DataTable с помощью запроса, запрос должен преобразовать этот столбец в числовой столбец:

SELECT *, CAST(your_column AS int) AS your_column_int
FROM your_table
ORDER BY your_column_int
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...