C# Linq Orderby vs SQL Orderby

C# Linq Orderby vs SQL Orderby,c#,asp.net,oracle,linq,C#,Asp.net,Oracle,Linq,我有一个包含以下数据的表列(Varchar): 列名称 102100 1-2000 112100 在SQL语句中使用OrderBy时,将按以下顺序获取项目: 列名称 1-2000 102100 112100 如果我查询数据(数据来自WCF)并使用LINQ OrderBy,我将按以下顺序获取项目: 属性名称 102100 112100 1-2000 数据“1-2000”在SQL和LINQ中的顺序似乎有所不同 我尝试使用StringComparison.Ordinal和StringCompariso

我有一个包含以下数据的表列(Varchar):

列名称

  • 102100
  • 1-2000
  • 112100
  • 在SQL语句中使用OrderBy时,将按以下顺序获取项目:

    列名称

  • 1-2000
  • 102100
  • 112100
  • 如果我查询数据(数据来自WCF)并使用LINQ OrderBy,我将按以下顺序获取项目:

    属性名称

  • 102100
  • 112100
  • 1-2000
  • 数据“1-2000”在SQL和LINQ中的顺序似乎有所不同

    我尝试使用
    StringComparison.Ordinal
    StringComparison.InvariantCulture
    ,但它似乎仍然不起作用


    请帮忙

    由于您的问题被标记为“Oracle”,我猜您是在向Oracle数据库发送SQL语句

    Oracle数据库使用的排序在“NLS”设置中定义。此设置的默认值取决于Oracle的安装方式以及主机服务器上的操作系统

    更多信息请点击此处:

    Oracle提供了一份非常详细的白皮书:

    摘录:

    “西班牙传统上将ch、ll和ñ视为各自的字母,分别在c、l和n之后排序。例如,以下西班牙语单词将按所列顺序排序:

    卡巴门特,卡巴lla,坎蒂纳,加州ña,克拉玛,库拉多,ch


    最近,这种传统的西班牙语排序方法已被现代的西班牙语排序方法所取代,它消除了ch和ll的特殊状态。”

    您可以将linq排序方法与顺序StringComparer一起使用

    list.Sort(StringComparer.Ordinal);
    

    这给了我您预期的结果。

    您能分享一下您的代码示例吗?StringComparer.Ordinal应该给出您要查找的结果。感谢您提供的大量信息。