【发布时间】:2020-01-15 20:07:00
【问题描述】:
我正在运行查询以检索郊区列表。当我应用 OrderBy 时(我希望按字母顺序排列)
query.OrderBy(s => s.Name);
我得到以下命令:
MOUNT ADA
MOUNTAIN BAY
MOUNTAIN GATE
MOUNTAIN VIEW
MOUNT ALFRED
MOUNT BEAUTY
似乎空格被忽略并按没有空格的郊区名称排序。 我需要做什么才能正确订购?我认为它们应该按以下顺序排列:
MOUNT ADA
MOUNT ALFRED
MOUNT BEAUTY
MOUNTAIN BAY
MOUNTAIN GATE
MOUNTAIN VIEW
【问题讨论】:
-
您针对什么运行查询?一个数据库,一个对象的集合,还是别的什么?如果是数据库,则由该列在数据库中的
collated的位置来确定。如果您对该列执行标准SELECT和ORDER BY,您应该得到相同的响应(因为这是您的查询告诉数据库执行的操作)。你到底在问什么? -
.OrderBy(m => m.Name, StringComparer.OrdinalIgnoreCase)这样的订单。但是标准的字符串顺序也应该这样做。 -
我用默认排序规则尝试了几个不同的引擎(SQL Server、Oracle、MySQL、PostgreSQL)并得到了预期的顺序。我想不出任何可以尝试的排序规则。您确实需要指定您使用的哪个引擎和排序规则。
-
查询是针对数据库的。是的,就是排序规则
-
@CaptainMorgan:我能够在 PostgreSQL 12.1 上使用
th-x-icu和th-TH-x-icu排序规则重现这种排序顺序(我编写了一个查询pg_collation的测试并测试了所有 650 个排序规则的顺序我有)。Name列是使用其中一种排序规则意外创建的吗?