使用linq计算过去一小时内修改的文件数

时间:2012-06-06 18:22:51

标签: linq

    var query=from file in Directory.GetFiles(source_path, filename, SearchOption.TopDirectoryOnly)
              where File.GetLastWriteTime(file) >= DateTime.Now.AddHours(-1)
              select file;

    Console.Write(query.ToList().Count.ToString());

我正在使用上面的代码来获取最近一小时内修改过的文件数。寻找更简单的解决方案。即将计数作为查询本身的一部分。

2 个答案:

答案 0 :(得分:6)

Count()可以使用谓词:

Directory.GetFiles(source_path, filename, SearchOption.TopDirectoryOnly).Count(file => File.GetLastWriteTime(file) >= DateTime.Now.AddHours(-1))

答案 1 :(得分:1)

您也可以在查询本身上调用Count()

var source = Directory.GetFiles(source_path, filename, 
    SearchOption.TopDirectoryOnly);
var timeStamp = DateTime.Now.AddHours(-1);
int count = (from file in source
            where File.GetLastWriteTime(file) >= timeStamp
            select file)
            .Count();

Console.Write(count);

更快的解决方案是使用带有谓词的Count()重载。