#c#
#c#
Вопрос:
Мне нужно отсортировать список в этом порядке M, T, W, R, F, S, N.
Пн-Пн, Вт -Вт. W- Ср, R- четверг, F-пятница, S-сб. и N-Вс.
Мой список может быть в случайном порядке W, M, F, T и т.д. Как мне отсортировать его как M, W, T, F? Любой эффективный способ сделать это?
Комментарии:
1. можете ли вы поделиться своими входными данными, выходными данными и структурами данных?
2. Например, мой входной список — T, M, F, а выходные данные должны быть M, T, F. (понедельник, вторник, пятница). Я бы хотел, чтобы список входных данных был отсортирован в моем пользовательском порядке: M, T, W, R, F, S, R.
3. это строки или что-то еще?
4. только строки. Спасибо.
Ответ №1:
Создайте и используйте пользовательский компаратор.
var items = new string[] { "W", "M", "F", "T" };
Array.Sort(items, Comparer<string>.Create(
(x, y) =>
{
var keys = "MTWRFSN";
return keys.IndexOf(x).CompareTo(keys.IndexOf(y));
}));
Console.WriteLine(string.Join(", ", items));
Тот же пример со списком вместо массива:
var items = new List<string> { "W", "M", "F", "T" };
items.Sort(Comparer<string>.Create(
(x, y) =>
{
var keys = "MTWRFSN";
return keys.IndexOf(x).CompareTo(keys.IndexOf(y));
}));
Console.WriteLine(string.Join(", ", items));