如何对工作日数组进行排序,使其显示为日历周(在C#中)?

时间:2015-04-03 13:04:28

标签: c# arrays

我有一个文本文件被读入string[],其中包含星期一到星期五的日期,但是以随机顺序排列。我想对它们进行排序,使它们像在日历周中那样出现。

我已尝试过Array.Sort()Array.Reverse(),但他们无法工作。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

只需按字符串的枚举DayOfWeek的相应值对其进行排序,然后将其返回给字符串。

string [] initialArray = {"Friday", "Monday", ... } ; 

string [] sortedArray = initialArray.OrderBy(s => Enum.Parse(typeof(DayOfWeek), s)).ToArray() ; 

答案 1 :(得分:2)

问题是排序方法将它们视为字符串,因此它们按字母顺序排序(字符串的默认比较)。你需要turn them into actual days of the week(这是一个枚举(一个数字))。

转换为DayOfWeek枚举:

public static DayOfWeek ToDayOfWeek(string str) {
        return (DayOfWeek)Enum.Parse(typeof(DayOfWeek), str);
}

然后你可以使用内置函数对它们进行排序。

我喜欢LINQ:

String[] weekdayArray = {"Monday", "Saturday", "Wednesday", "Tuesday", "Monday", "Friday"};
var daysOfWeek = weekdayArray
    .Select(str => ToDayOfWeek(str))
    .OrderBy(dow => dow);

这是.NET Fiddle