我有一个文本文件被读入string[]
,其中包含星期一到星期五的日期,但是以随机顺序排列。我想对它们进行排序,使它们像在日历周中那样出现。
我已尝试过Array.Sort()
和Array.Reverse()
,但他们无法工作。
有什么想法吗?
答案 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。