2012-02-24 15 views
0

クエリ自体を実行するのと同時にLINQクエリで返されるすべての要素に対して操作を実行できるかどうかは疑問でした。クエリと同時にLINQクエリに返される各値を変更します。

例:

var files = Directory.EnumerateFiles(@"C:\etc", "*.*", SearchOption.AllDirectories) 
        .Where(s => (s.ToLower().EndsWith(".psd")) 
           && 
           new FileInfo(s).Length > 500000); 

が設定された基準内のすべてのファイルを検索しますが、私はトリム言いたかった場合:後、私は何とかsがF(s)は言うことが返された各文字列から「C \を」 where節、またはこれはそれぞれのループを別々にforeachするでしょう。

ありがとうございました。どこの文の後

答えて

2

、あなたはCでの文字列を返します。この

.Select(s => s.Replace(@"C:\","")); 

を追加することができます:\剥奪。

2

はい、あなたはそれを行うにはSelectメソッドを使用することができます。

var files = Directory.EnumerateFiles(/* ... */) 
        .Where(/* ... */) 
        .Select(s => s.StartsWith(@"C:\") ? s.Substring(3) : s); 
1

あなたはSelect句を使用して投影をしたい:

var files = Directory.EnumerateFiles(@"C:\etc", "*.*", SearchOption.AllDirectories) 
    .Where(s => s.ToLower().EndsWith(".psd") && new FileInfo(s).Length > 500000) 
    .Select(s => s.Substring(3)); 
関連する問題