入手したフォルダはこんな感じです
次の記事では、1つの文だけが適切な解決策です。ファイルは、指定された作成時間や最終変更時間など、私に従ってソートされます。
C#Sortメソッドを使用して、FileInfo []を時間またはname_darkトーンでソートしますブログ-CSDN博客
もう二つ:
上記のCratintimeで並べ替えるのはまだ間違っていて、最終的にLastWriteTimeで並べ替えるのはほとんど正しくありませんでしたが、後で誰かがファイルを変更して並べ替えの混乱を引き起こしたことを否定できません。
以下は、名前、作成時間、変更時間の順に、逆の順序で並べ替えられています。これは参考になります。
https://www.cnblogs.com/soundcode/p/4885723.html
3つのシフト:
それでも間違っていることがわかったので、名前を組み合わせて並べ替える関数を書き直します。
private void SortAsFileCreationTime(ref FileInfo[] arrFi)
{
Array.Sort(arrFi, delegate (FileInfo x, FileInfo y)
{
DateTime dtX = Convert.ToDateTime(x.Name.Split(new string[] { "_data" }, StringSplitOptions.None)[0]);
DateTime dtY = Convert.ToDateTime(y.Name.Split(new string[] { "_data" }, StringSplitOptions.None)[0]);
return dtX.CompareTo(dtY);
//return y.CreationTime.CompareTo(x.CreationTime);
});
//Array.Sort(arrFi, delegate (FileInfo x, FileInfo y) { return x.LastWriteTime.CompareTo(y.LastWriteTime); });
//Array.Sort(arrFi, delegate (FileInfo x, FileInfo y) { return x.Name.CompareTo(y.Name); });//顺序排列
//Array.Sort(arrFi, delegate (FileInfo x, FileInfo y) { return y.Name.CompareTo(x.Name); });//倒序排列
}
次のようなファイル名:2016-12-21_data.log、分割して2016-12-21を取得し、時間変数に変換してから並べ替えました。