2016-04-27 7 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

あなたの 'どこで'ラムダが正しく形成されていません。 'ToString'をすべて打つのは無意味です。おそらく' filename => filename.LastWriteTime> = from_date && filename.LastWriteTime <= to_dateに近いものでしょう。 ' –

答えて

2

なぜすべてToString()?文字列にはLastWriteTimeというプロパティはありません。

これを試してください:あなたは、現在お使いのFileオブジェクトにToString()メソッドを呼び出した後、LastWriteTimeプロパティにアクセスしようとしている

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

。これは実際にはコンパイルしてはいけません(FileInfoオブジェクトの代わりにLastWriteTimeに文字列からアクセスしようとすると)。

あなた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 
} 
関連する問題