我有一个表列(varchar),其中包含以下数据:
column_name
- 102100
- 1-2000
- 112100
当我在SQL语句中使用orderby时,我按以下顺序获取项目:
column_name
- 1-2000
- 102100
- 112100
如果我查询数据(数据来自WCF)并使用Linq Orderby,则按以下顺序获取项目:
propertyName
- 102100
- 112100
- 1-2000
数据" 1-2000"似乎在SQL和LINQ中的排序不同。
我尝试使用StringComparison.Ordinal
和StringComparison.InvariantCulture
,但似乎仍然不起作用。
请帮助!
由于您的问题被标记为" Oracle",我想您将SQL语句发送到Oracle数据库。
在" NLS"设置中定义了Oracle数据库使用的排序。此设置的默认值取决于Oracle如何安装和主机服务器上的操作系统。
更多信息在这里:https://docs.oracle.com/cd/b28359_01/server.111/b28298/ch5lingsort.htm
和一张来自Oracle的非常详细的白皮书:http://www.oracle.com/technetwork/database/database-technologies/globalization/globalization/twp-appdev-linguistic-sorting-sorting-10gr2-10gr2-132064.pdf
提取:
"西班牙传统上将 ch , ll 以及ñ作为自己的字母,以 c , l 和 n 。 Cabalmente,Caba ll a,Cantina,ca n n a,Clamar,Curador, CH ch Ácara 最近,这种传统的西班牙分类实践已被现代西班牙人所取代,它消除了 ch 和 ll 的特殊地位。"
您可以将Linq排序方法与Ordinal StringComparer
一起使用list.Sort(StringComparer.Ordinal);
这给了我您的预期结果。