具有显式区域性的 C# LINQ OrderBy 在不同的 .NET 版本上返回不同的结果

问题描述 投票:0回答:1

我有一个英语和韩语单词列表,我试图对其进行排序,以便韩语单词首先排序,英语单词最后排序。

这篇文章正是我的问题:C# linq order by dependent on Language

但是,我无法让它在我的 .NET 4.7.2 MVC 应用程序中工作。我使用了这篇文章中完全相同的代码:

string[] stringArray = new string[] { "NIKE", "한글", "adidas", "한글Korean" };

CultureInfo ci = CultureInfo.GetCultureInfo("ko-KR");
StringComparer comp = StringComparer.Create(ci, true);

var ordered = stringArray.OrderBy(s => s, comp);
var output = string.Join(", ", ordered.ToArray());
"

在我的 4.7.2 应用程序中,输出“adidas, NIKE, 한글, 한글Korean”,这不是我想要的。

\n""

我很困惑为什么这不起作用,所以我尝试了 .NET 8 控制台应用程序,并使用完全相同的代码片段,输出是“한글,한글Korean,adidas,NIKE”,这正是我想要的。 "

我发现这个文档提到了从 .NET 5 开始的全球化变化,我怀疑这是造成这种情况的原因,尽管我不完全确定解决这个问题的解决方案是什么,而无需编写自定义内容:https:// learn.microsoft.com/en-us/dotnet/core/extensions/globalization-icu

是否有解决方案可以在 4.7.2 中使用,将英语单词放在最后,而不必编写自定义内容?

c# .net linq .net-4.7.2
1个回答
0
投票

只是一个建议: 如果将数组拆分为 en-us 和 ko-KR 单独的数组,然后在最后排序并绑定会怎么样?

© www.soinside.com 2019 - 2024. All rights reserved.