2017-04-30 5 views
0

現在、アルファベット順に文字列をソートできるコードがあります。暦年に応じて月を並べ替えることを希望します。私はこのウェブサイトでそれを行う方法を見ましたが、私のコードに具体的にそれらを適用できません。順序を並べ替えるために何を追加する必要がありますか(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; 
    } 
} 

エラーが表示されます。

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

       }; 
      } 

エラーAnnonymousの型 '<を変換することはできません読み込みます文字列Name、System.DateTime Sort> 'to' string 'を入力します。この問題を解決するにはどうすればよいですか?

+0

「私はこのウェブサイトでそれを行う方法を見ました」 - これらの方法の1つを使用するが動作しない[mcve]を表示できますか? –

+0

http://stackoverflow.com/questions/8539088/sorting-months-in-a-list但しリストにあるもの – Duncher

+0

なぜそれは配列と異なっても動作すると思いますか?必要ならば、 'ReadAllLines'の結果に対して' .ToList() 'を呼び出すと、自分で作業するリストができます。 –

答えて

0

DateTimeタイプに頼るのではなく、Select命令(最初のコードボックス、3行目)に匿名データ型を作成しています。ランタイムは、匿名の型をStringにキャストする方法を知らない。これは期待通りに動作するはず

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

は通常DateTimeことに注意してください - >Stringキャストが与えられた唯一の月からの完全な日付を作成する必要が。これは、日と年が現在の時、分、秒がゼロになっていると仮定します。

関連する問題