首页 > 解决方案 > 由于 DayOfWeek 对字符串数组进行排序

问题描述

我有一个字符串数组

string[] days={ "1", "2", "6" }

我想DayOfWeek越来越多地对其进行排序。例如,“1”是星期一,“2”是星期二,“6”是星期六。今天是星期四。所以最近的一个是星期六,星期一,星期二。所以最终数组将是

days={ "6", "1", "2" }

我找不到任何解决方案来对它们进行排序。我怎样才能对它们进行排序。

提前致谢。

标签: c#arrayssortingdayofweek

解决方案


您可以为此使用 LINQ:

string[] days = { "1", "2", "6" };

var today = (int)(DateTime.Now.DayOfWeek + 6) % 7;

var result = days
    .GroupBy(x => int.Parse(x) > today)
    .OrderByDescending(x => x.Key)
    .SelectMany(g => g.OrderBy(x => x));

Console.WriteLine("[{0}]", string.Join(", ", result));
# [6, 1, 2]

执行以下操作:

  1. 将之前和之后的日子分成两组
  2. 对前几天的后几天进行排序(降序)
  3. 对每个组进行排序(升序)

推荐阅读