2012-02-17 15 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(); 
} 

、あなたはまた、2つのWhere句を組み合わせることができ、わかりやすくするために私はそれらを別々にしました。これは同じように有効です:

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

投票の理由は何ですか? –

+0

@GHarping私は確かにあなたをdownvoteしなかった...あなたの質問は完全に有効です。 –

+0

ああ、多くの謝罪、あなたの答えは、このスキャンダルの下降残虐行為で2番目にほぼ一致した。助けてくれてありがとう。 –

関連する問題