Почему C# OrderBy с строчными строчными буквами перед прописными? - PullRequest
0 голосов
/ 30 марта 2020

Я кодирую в C#, и у меня возникла ситуация, когда мне потребовалось заказать последовательность из одной строки символов. пример:

var list = new List<string> { "1", "A", "a", "0" };

Так как все мы знаем, что таблица ASCII содержит список Upper перед Lower, я ожидал, что это будет упорядочено следующим образом (0, 1, A, a), но оно было упорядочено следующим образом this (0, 1, a, A)

У меня есть простой пример:

        var strs = new List<string> { "1", "A", "a", "0" };
        var orderedStrs = strs.OrderBy(l => l);
        Console.WriteLine("---strs---");
        foreach(var elem in strs){
            Console.WriteLine(elem);
        }
        Console.WriteLine("---orderedStrs---");
        foreach(var elem in orderedStrs){
            Console.WriteLine(elem);
        }

        var chars = new List<char> { '1', 'A', 'a', '0' };
        var orderedChars = chars.OrderBy(ch => ch);
        Console.WriteLine("---chars---");
        foreach(var elem in chars){
            Console.WriteLine(elem);
        }
        Console.WriteLine("---orderedChars---");
        foreach(var elem in orderedChars){
            Console.WriteLine(elem);
        }

и это вывод:

        ---strs---
        1
        A
        a
        0
        --- orderedStrs---
        0
        1
        a
        A
        ---chars---
        1
        A
        a
        0
        --- orderedChars---
        0
        1
        A
        a

Может кто-нибудь ответить мне этот вопрос?

1 Ответ

1 голос
/ 30 марта 2020

Вы можете использовать OrderBy(a => a, StringComparer.Ordinal)

var strs = new List<string> { "1", "A", "a", "0" };
var orderedStrs = strs.OrderBy(l => l);
Console.WriteLine("---strs---");
foreach (var elem in strs.OrderBy(a => a, StringComparer.Ordinal))
{
    Console.WriteLine(elem);
}

результат

---strs---
0
1
A
a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...