捷克语中的c#排序数组

时间:2018-07-10 05:36:51

标签: c# culture

我在对带有捷克名字的数组进行排序时遇到问题。 我有这样的数组:

    var myList = new[]
    {
        "Čas revize", "Datum kalibrace", "Chybové kódy"
    };

,然后尝试按以下方式对其进行排序:

CultureInfo culture = new CultureInfo("cs-CZ");
var result = myList.OrderBy(x => x, StringComparer.Create(culture, true));

因此,我希望数据将按以下顺序排序:

"Čas revize", "Chybové kódy", "Datum kalibrace"

但是它以不同的顺序结束:

"Čas revize", "Datum kalibrace", "Chybové kódy"

2 个答案:

答案 0 :(得分:9)

有趣的问题。如果您阅读documentation

  

在捷克-捷克共和国文化中,“ ch”是单个字符,大于“ d”。但是,在英语-美国文化中,“ ch”由两个字符组成,“ c”小于“ d”。

订购捷克字母

AÁC C D D EÉF G H Ch I J J K L M NŇOÓP Q RŘSŠTŤUÚV W X YÝZŽ

所以数组的顺序是正确的。

答案 1 :(得分:0)

我刚刚对此进行了测试:

List<string> myList = new List<string> { "Čas revize", "Datum kalibrace", "Chybové kódy", "óóó", "ČČČ", "aaa", "ééé", "èèè", "êêê", "fff", "Code" };
CultureInfo culture = new CultureInfo ("cs-CZ");
List<string> result = myList.OrderBy (x => x, StringComparer.Create (culture, true)).ToList ();

得到结果:

  

aaa代码'Časrevize'ČČČ'Datum kalibrace'éééèèèêêêêêêfffyChybovékódyóóó

然后我对此进行了测试:

List<string> myList = new List<string> { "Čas revize", "Datum kalibrace", "Chybové kódy", "óóó", "ČČČ", "aaa", "ééé", "èèè", "êêê", "fff", "Code" };
List<string> result = myList.OrderBy (j => j).ToList ();

并得到以下结果:

  

aaa'Časrevise'ČČČ'Chybovékódy'代码'Datum kalibrace'éééèèèêêêêfffóóó

看起来Chybové中的'C'与普通的'C'是不同的字符。或者“ Ch”或“ Chy”在字母表中可能有自己的位置。但是,如果没有CultureInfo,似乎可以正确对待它,而不必考虑特殊字符。