2016-04-27 224 views
-2

得到了一個函數,它假設在指定的範圍內返回總文件大小,但它會遍歷目錄中的所有文件,而不是日期範圍之間的文件。指定的日期範圍沒有正確返回c# - 編輯

public static long fileSize(string source_path) 
{ 
    return new DirectoryInfo(source_path).EnumerateFiles("*.SS*").Where(file => file.CreationTime < dt.AddMonths(-2)).Sum(file => file.Length); 
} 
+1

是二一個DirectoryInfo對象?如果是,爲什麼ToString應用於FileInfo對象?去掉它。 – Steve

+0

您的'Where' lambda形式不正確。對所有東西都拍'ToString'是無意義的......應該更接近'filename => filename.LastWriteTime> = from_date && filename.LastWriteTime <= to_date)' –

回答

2

爲什麼所有的ToString()?一個字符串沒有LastWriteTime屬性。

試試這個:

foreach (var filename in di.EnumerateFiles("*.SS*").Where(filename=>filename.LastWriteTime >= from_date && filename.LastWriteTime <= to_date)) 
5

您正在呼喚你的文件對象ToString()方法,然後試圖訪問LastWriteTime屬性。這實際上甚至不應該編譯(因爲您試圖從字符串訪問LastWriteTime而不是FileInfo對象)。

嘗試刪除所有你ToString()通話,並使用下列內容:

// Find your files with LastWriteTimes that fall between your specific range 
foreach (var file in di.EnumerateFiles("*.SS*").Where(f => f.LastWriteTime >= from_date && f.LastWriteTime <= to_date)) 
{ 
    // Iterate through your files here 
} 
相關問題