在列表中对月份和年份进行排序

mir*_*osz 1 c# sorting date list

我有一个字符串列表,每个字符串是一个月+年.我在这里找到了类似的问题,但这只是几个月的清单.所以我的清单看起来像那样

List<string> monthsList = new List<string>();
       monthsList.Add("August 2015");
       monthsList.Add("June 2014");
       monthsList.Add("February 2014");
       monthsList.Add("June 2015");
Run Code Online (Sandbox Code Playgroud)

有没有办法这样订购?

February 2014
June 2014
June 2015
August 2015
Run Code Online (Sandbox Code Playgroud)

Use*_*678 9

确保将DateTime.Parse格式更改为除月份之外的年份:

DateTime.ParseExact(x, "MMMM yyyy", CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)

然后确保更改OrderBy密钥选择器,使其考虑整个日期,而不仅仅是执行排序的月份:

.OrderBy(x => x.Sort)
Run Code Online (Sandbox Code Playgroud)

完整的代码如下所示:

var sortedMonths = monthsList
    .Select(x => new { Name = x, Sort = DateTime.ParseExact(x, "MMMM yyyy", CultureInfo.InvariantCulture) })
    .OrderBy(x => x.Sort)
    .Select(x => x.Name)
    .ToArray();
Run Code Online (Sandbox Code Playgroud)