2016-04-27 165 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 
} 
相关问题