Linq Orderby vs SQL Orderby
У меня есть столбец таблицы (Varchar) со следующими данными:
COLUMN_NAME
102100 1-2000 112100Когда я использую OrderBy в инструкции SQL, я получаю элементы в следующем порядке:
COLUMN_NAME
1-2000 102100 112100Если я запрашиваю данные (данные поступают из WCF) и использует LINQ OrderBy, я получаю Элементы в следующем порядке:
Имя свойства
102100 112100 1-2000Кажется, что данные "1-2000" упорядочены по-разному в SQL и LINQ.
Я попытался использовать StringComparison.Ordinal
и StringComparison.InvariantCulture
, но он все еще не работает.
Пожалуйста, помогите!
Вы можете использовать метод сортировки linq с порядковым номером StringComparer
list.Sort(StringComparer.Ordinal);
Это дает мне ожидаемый результат.
Поскольку ваш вопрос помечен как "Oracle", я предполагаю, что вы отправляете операторы SQL в базу данных Oracle.
Сортировка, используемая базой данных Oracle, определяется в настройках "NLS". Значение по умолчанию этого параметра зависит от того, как Oracle был установлен, и операционной системы на главном сервере.
Дополнительная информация здесь: https://docs.oracle.com/cd/B28359_01/server.111/b28298/ch5lingsort.htm
И очень подробный документ из Oracle: http://www.oracle.com/technetwork/database/database-technologies/globalization/twp-appdev-linguistic-sorting-10gr2-132064.pdf
Экстракт:
"Испания традиционно относится к ch, ll, а также - как собственные буквы, упорядоченные после c, l и n соответственно. Например, следующие испанские слова будут отсортированы как перечисленные:
cabalmente, CABA Л.Л. а, кантин, ч N A, clamar, curador, гл Acara
Недавно эта традиционная испанская практика сортировки была заменена современным испанским сословием, которое устраняет особый статус ch и ll ".