2015年07月05日

LINQ to Objectサンプル(17): 指定したフォルダ内から条件に一致したファイル名を列挙する

  
指定したディレクトリ内にあるファイルで、拡張子が”exe”であるファイル名の一覧を作成する例です。

■ループを使った例
string[] files = System.IO.Directory.GetFiles("C:\\Windows");
List<string> list = new List<string>();
foreach (var file in files) {
    if (Path.GetExtension(file) == ".exe")
        list.Add(Path.GetFileName(file));
}
list.ForEach(file => Console.WriteLine(file));


■LINQを使った例
var list = System.IO.Directory.GetFiles("C:\\Windows")
                    .Where(file => Path.GetExtension(file) == ".exe")
                    .Select(file => Path.GetFileName(file));
list.ToList().ForEach(file => Console.WriteLine(file));

GetFilesメソッドは、string[] を返します。 配列は、IEnumerable<T>を実装していますので、LINQが利用できるという訳ですね。

この例でも(今までのほとんどの例も)、LINQの子ーどについては、ToList()を呼び出す必要はないのですが、ループを使ったコードと、まったく同一の内容とするためにToList()を呼び出しています。



 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/52423422