如何获得字符串的瑞典排序顺序

6

我有一个问题,需要对瑞典语字符串进行排序。

我遇到的问题是以下字符:v、w、å、ä、ö。

new[] { "ö", "ä", "å", "wa", "va", "wb", "vb", "a"  }
.OrderBy(x => x, new CultureInfo("sv-SE").CompareInfo.GetStringComparer(CompareOptions.None))

预期结果: a, va, vb, wa, wb, å, ä, ö

实际结果: a, va, wa, vb, wb, å, ä, ö

有什么选项可以使字符串按预期排序吗?


2
你读过这个吗:https://learn.microsoft.com/en-us/globalization/locale/sorting-and-string-comparison - Wyck
从维基百科上了解到,这曾经是正确的顺序,所以可能 Windows/.NET 没有遵循最近的变更? - voidengine
据我所知,.NET正在互换地处理v和w。我了解到,根据Svenska Akademiens ordlista第13版,排序顺序最近在2006年发生了变化。为了确保,我们可能需要调查.NET源代码 - Wyck
作为一种解决方法,我已经切换到 se-SE(Sami)文化来正确排序字母字符串。 - Oskar Sjöberg
@OskarSjöberg 如果您解决了问题,您可以随时回答自己的问题。 - ilkerkaran
1个回答

3
作为一种解决方法,我已经切换到se-SE(Sami)文化,以便在等待.NET排序规则更新时正确地对字母字符串进行排序。
更新:
这是github问题: https://github.com/dotnet/corefx/issues/37753 更新2:
问题不在于.NET,而是在底层操作系统中定义的排序规则。这个错误只存在于Windows上。

1
这个问题在 .NET Core 3.0 预览版5中也没有得到解决。建议将其作为一个问题提出。 - Panagiotis Kanavos
1
好主意!我现在已经提出了一个问题,参见上面的链接。 - Oskar Sjöberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接