2011-07-08 7 views
6

こんにちは私は多くのファイルをフォルダに持っています。これらのファイルには、特定の形式のファイル名に日付と時刻があります。私は名前から日付を抽出し、日付で昇順に並べ替える必要があります。 ファイル名の例: -C#を使用してファイル名の日付順にファイルを並べ替える方法は?

format_type_2011-07-12-13-00-12.txt

以前の私はCREATETIMEで使用していました。しかし、今、要件が変更されました。

var Files = new DirectoryInfo(FileDirectory).GetFiles() 
                  .OrderBy(f => f.CreationTime) 
                  .ToList(); 

どうすればよいですか?どんな助けもありがとうございます。

+0

日付を抽出し、それを呼び出して、疑問符を置き換えるために関数を書きます関数....? – Roly

+1

この質問に似て:http://stackoverflow.com/questions/1199006/how-to-sort-an-array-of-fileinfo-c – Tremmors

+0

最初の作成後にファイルにアクセスまたは更新されていますか? FileInfo.CreationTime(またはLastWriteTime)プロパティを使用できない理由はありますか? – IAbstract

答えて

7

これは動作するはずです:

あなたのファイル名(フォーマット情報を引いたもの)はすでにISO8601の順番(年月、月、日など)であるため、日付に変換する必要のない文字列に基づいてソートすることができます。

あなたは上の並べ替えしたいパートをexractためにあなたのORDERBY文で通常の文字列演算子を使用することができます
+1

+1はすでに「ISO8601の注文」になっています。 –

+0

@BrokenGlass:ありがとう – User13839404

0

私はLastWriteTimeがあなたが探しているものだと思います。ここでは、MSDNのリンクは次のとおりです。また、http://msdn.microsoft.com/en-us/library/system.io.filesysteminfo.lastwritetime.aspx

、必要に応じてのFileInfoへのリンク:http://msdn.microsoft.com/en-us/library/system.io.fileinfo.aspx

+0

いいえLastWriteTimeは私が探していません。私は日付と時刻でファイルをソートする必要があり、この日付はファイル名自体から来ます。 – User13839404

0

あなたが接近している:

var Files = new DirectoryInfo(@"C:\").GetFiles() 
            .OrderBy(f => f.LastWriteTime) 
            .ToArray(); //or .ToList() whatever suits you best 
+0

@Adrain。私はファイル名から日付と時刻でソートする必要があります。私はFileInfoを使うことができません。 – User13839404

0

私はこのコードをあなたのために働くべきだと思う:

var Files = new DirectoryInfo(@"W:\").GetFiles().OrderBy(f=> f.LastWriteTime).ToList(); 
0
var Files = new DirectoryInfo(FileDirectory) 
        .GetFiles() 
        .OrderBy(f => f.Name.Substring(f.Name.Length - 23, 19) 
        .ToList(); 
1

string f1 = "Foo_2011-07-12-13-00-12.txt"; 
    string f2 = "Bar_2011-07-12-13-00-15.txt"; 
    string f3 = "Blah_2011-07-12-13-00-11.txt"; 

    int sortRelevant = "0000-00-00-00-00-00.txt".Length; 

    List<string> files = new List<string>() { f1, f2, f3 }; 

    var sorted = (from f in files orderby f.Substring(f.Length - sortRelevant) select f); 

    foreach (string fs in sorted) 
    { 
     Console.WriteLine(fs); 
    } 
関連する問題