Задать вопрос

DataTable сортировка столбца типа String как число?

Всем привет,
помогите, пожалуйста, правильно отсортировать строки в DataTable по столбцу, в котором хранятся значения в шестнадцатеричной системе, то есть строки формата "0x0..F". Сейчас делаю так:
var dataRows = (from row in ds.Tables[0].Select()
                                orderby Int32.Parse(row["Type"].ToString().TrimStart(new[] { '0', 'x' }),
                                                    NumberStyles.HexNumber |
                                                    NumberStyles.AllowHexSpecifier) ascending
                                select r).AsEnumerable();


но как-то не верится, что все так сложно, может есть какой-то более правильный и быстрый способ, устроит даже алгоритм перебора вручную, лишь бы быстро было.

Еще проблема моего решения - при неправильных данных - сразу падает, ибо Int32.Parse не нравится строка. Неправильных данных в принципе быть не должно, но все равно такое поведение при сортировке как-то кажется неправильным, а блоки try городить - так это вообще костыли какие-то.
  • Вопрос задан
  • 3631 просмотр
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@gleb_kudr
С ошибкой все просто. Используйте Int32.TryParse

Но лучше сразу использовать специальную конвертилку Convert.ToUInt32. Думаю, лучше этого тут уже будет не сделать.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы