Orderby () неправильно упорядочивает номера c # - PullRequest
35 голосов
/ 09 марта 2010

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

Проблема в том, что версия сохраняется в виде строки вместо int, и когда я выполняю OrderBy (q => q.Version) для результатов, они возвращаются как

1
10
11
2
3
...

Очевидно, что 2 предшествует 10.

Есть ли способ для меня преобразовать версию в целое число или есть простой IComparer там? Пока я не мог найти ничего существенного.

Я пытался сделать это:

var items = (from r in results
             select r).OrderBy(q => Int32.Parse(q.Version));

Это компилируется, но не работает.

Ответы [ 12 ]

0 голосов
/ 09 марта 2010
var query = from r in items
            let n = int.Parse(r)
            orderby n
            select n;
0 голосов
/ 09 марта 2010

Похоже, у вас есть текстовое значение вместо числового значения.

Если вам нужно отсортировать, вы можете попробовать:

var items = (from r in results
             select r);
return items.OrderBy( v=> Int.Parse(v.Version) );
...