Сортировка списка по строковому регистру - PullRequest
3 голосов
/ 19 февраля 2009

Как мне отсортировать список по порядку дел, например

  • SMTP: user@domain.com
  • SMTP: user@otherdomain.com
  • SMTP: user@anotherdomain.com

Я бы хотел отсортировать так, чтобы запись в верхнем регистре была первой в списке, например, SMTP: user@anotherdomain.com.

Ответы [ 4 ]

12 голосов
/ 19 февраля 2009

Вы можете использовать StringComparer.Ordinal для сортировки с учетом регистра:

        List<string> l = new List<string>();
        l.Add("smtp:a");
        l.Add("smtp:c");
        l.Add("SMTP:b");

        l.Sort(StringComparer.Ordinal);
1 голос
/ 19 февраля 2009

Я писал другой пример, пока t4rzsan ответил =) Я предпочитаю ответ t4rzsan ... в любом случае, это ответ, который я писал.

//Like ob says, you could create your custom string comparer
public class MyStringComparer : IComparer<string>
{
    public int Compare(string x, string y)
    {
        // Return -1 if string x should be before string y
        // Return  1 if string x should be after string y
        // Return  0 if string x is the same string as y
    }
}

Пример использования вашего собственного строкового компаратора:

public class Program
{
    static void Main(string[] args)
    {
        List<string> MyList = new List<string>();

        MyList.Add("smtp:user@domain.com");
        MyList.Add("smtp:user@otherdomain.com");
        MyList.Add("SMTP:user@anotherdomain.com");

        MyList.Sort(new MyStringComparer());

        foreach (string s in MyList)
        {
            Console.WriteLine(s);
        }

        Console.ReadLine();
    }
}
0 голосов
/ 19 февраля 2009

вам нужно создать собственный класс сравнения, который реализует IComparer

0 голосов
/ 19 февраля 2009

Большинство языковых библиотек имеют встроенную функцию сортировки с возможностью указать функцию сравнения. Вы можете настроить функцию сравнения для сортировки на основе любых критериев.

В вашем случае функция сортировки по умолчанию будет работать.

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