将文件大小标准添加到Directory.EnumerateFiles LINQ查询

时间:2012-02-17 16:04:38

标签: c# linq

使用LINQ我想检索给定目录下的文件大小小于/大于指定文件大小的所有文件。

我有以下代码,目前返回List:

    public static List<string> getFs(string sDir)
    {
        var files = Directory.EnumerateFiles(sDir, "*.*", SearchOption.AllDirectories)
            .Where(s => s.ToLower().EndsWith(".psd"));

        return files.ToList();
    }

我发现以下代码由Monsieur Skeet提供,似乎可以访问文件大小:

long diskSpace = (from directory in Directory.EnumerateDirectories(@"c:\")
              from file in Directory.EnumerateFiles(directory)
              select file)
             .Sum(file => new FileInfo(file).Length);

我如何调整文件大小方面的内容到我现有的代码中,或者这是我在已有的情况下的错误方法?

1 个答案:

答案 0 :(得分:3)

您只需添加额外的Where ...例如:

public static List<string> getFs(string sDir) 
{ 
    var files = Directory.EnumerateFiles(sDir, "*.*", SearchOption.AllDirectories) 
        .Where(s => s.ToLower().EndsWith(".psd"))
        .Where(s => new FileInfo(s).Length > 10000); 

    return files.ToList(); 
} 

当然,您也可以合并两个Where条款;为清楚起见,我将它们分开。这同样有效:

    var files = Directory.EnumerateFiles(sDir, "*.*", SearchOption.AllDirectories) 
        .Where(s => s.ToLower().EndsWith(".psd") && new FileInfo(s).Length > 1000000);