按日历年排序月份

时间:2017-04-30 21:00:20

标签: c# algorithm sorting

我目前有一些代码可以按字母顺序对字符串进行排序。我想根据日历年对它进行分类。我已经看到了在这个网站上做到这一点的方法,但不能专门将它们应用到我的代码中。我需要添加什么才能按顺序排序(1月,2月等)。

将数月读入数组的代码:

var month1Values = File
    .ReadAllLines(monthFilePath)
    .Select(x => new { Name = monthFilePath, Sort = DateTime.ParseExact(x, "MMMM", CultureInfo.InvariantCulture) })
    .ToArray(); 

要排序的代码:

if (SortFile == 3)
{                 
    comparison1 = string.Compare(fileData[index].MonthValues, 
        fileData[index + 1].MonthValues) > 0;

    if (comparison1)
    {
        temp = fileData[index].MonthValues;
        fileData[index].MonthValues = fileData[index + 1].MonthValues;
        fileData[index + 1].MonthValues = temp;
        swap = true;
     }
 } 

错误出现在asterix的位置:

for (var index = 0; index < datasize; index++)
            {
                fileData[index] = new FileData
                {
            DayValues = day1Values[index],
            MonthValues = *month1Values[index]*,

                 };
            }

错误读取无法转换类型'&lt; annonymous type:string Name,System.DateTime Sort&gt;' '字符串'。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您正在Select指令(第一个代码框,第3行)中创建匿名数据类型,而不是依赖DateTime类型。运行时不知道如何将匿名类型转换为String

这应该按预期工作:

.Select(x => DateTime.ParseExact(x, "MMMM", CultureInfo.InvariantCulture))

请注意,正常的DateTime - &gt; String广告投放涉及仅在给定的月份创建完整日期;这涉及假设日期和年份是当前的,以小时,分钟和秒为零。