2012-02-17 48 views
0

使用LINQ我想檢索給定目錄下的所有小於/大於指定文件大小的文件。將文件大小標準添加到Directory.EnumerateFiles LINQ查詢

我有下面的代碼返回當前的列表:

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

     return files.ToList(); 
    } 

我發現先生斯基特的下面的代碼禮貌,似乎訪問文件大小:

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

我將如何適應這個文件的大小方面到我現有的代碼中,或者這是我已經有的錯誤方法嗎?

回答

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); 
+0

任何投票的理由爲何? – 2012-02-17 16:10:48

+0

@GHarping我當然沒有倒下你......你的問題是完全有效的。 – 2012-02-17 16:20:09

+0

啊,很多道歉,你們的回答幾乎與第二次一樣,這是可怕的低調的暴行。非常感謝您的幫助。 – 2012-02-17 16:29:36