2015-10-25 45 views
0

我有按日期排序文件的問題;這是我的示例代碼:C#按日期和時間排序文件

string[] files = new string {"file1.txt", "file3.txt", "file4.txt"} 
    var list = new List<string> {"10/03/2015", "01/01/2015", "20/08/2015"}; 
    list.Sort((a, b) => a.CompareTo(b)); 

我想在輸出中獲得不失每個文件及其時間之間的順序中的所有文件按日期排序:

// file3.txt 01/01/2015 
// file1.txt 10/03/2015 
// file4.txt 20/08/2015 

所以我的問題是我怎麼能根據文件排序日期,謝謝:)

+0

列表和文件數組如何關聯? 'file2.txt'在輸出中被忽略,但我看不出爲什麼。或者,您可以從文件本身獲取創建/上次讀取/上次寫入時間並對其進行排序。 – keyboardP

+0

對不起,我犯了錯誤,請儘量忘記:file2.txt – Silva

+0

啊好的。該列表是從單獨的文件中獲取日期,還是很高興使用.NET Framework方法(如[File.GetCreationTime](https://msdn.microsoft.com/en-us/library/system))獲取日期。 io.file.getcreationtime%28V = vs.110%29.aspx)? – keyboardP

回答

1

用Linq輕鬆完成。首先,Zip在一起的兩個集合,並解析日期:

var filesAndDates = files 
    .Zip(list, 
      (filename,dateString) => new{filename, 
             date = DateTime.ParseExact(
               dateString, 
               "dd/MM/yyyy", 
               CultureInfo.InvariantCulture)}); 

然後命令他們:

var orderedFilesAndDates = filesAndDates.OrderBy(x => x.date); 

我發現自己想知道你是如何與2結束的「同步」的東西名單。您可以製作複合類型並將它們保存在單個列表中。管理這種方式要容易得多...

+0

有沒有Linq的東西,我想留在.net 2.0上 – Silva

0

首先你需要解析的值DateTime類型,然後做排序。

+0

好吧我這樣做,但比,我怎麼能排序後的文件和日期之間的關係? – Silva

+0

建立一個定義文件名和日期時間的類 –