2015年07月08日

LINQ to Objectサンプル(18): 2つの配列を連結する

  
今回は、2つのフォルダにあるファイルのフルパス名一覧を作成する例を示します。

■ループを使ったコード
string[] files1 = Directory.GetFiles("C:\\");
string[] files2 = Directory.GetFiles("D:\\");
// files1,files2を連結したfiles3を作成
List<string> files3 = new List<string>(files1);
foreach (var file in files2)
    files3.Add(file);
// 連結した結果を表示
files3.ForEach(file => Console.WriteLine(file));


■LINQを使ったコード
string[] files1 = Directory.GetFiles("C:\\");
string[] files2 = Directory.GetFiles("D:\\");
// files1,files2を連結したfiles3を作成
var files3 = files1.Concat(files2);
// 連結した結果を表示
files3.ToList().ForEach(file => Console.WriteLine(file));

Concatメソッドを使うと、2つのシーケンスを連結することができます。ここでは配列を例に取りましたが、List<T>などでも利用できます。

実をいうと、LINQを使わなくてもAddRangeメソッドを使えば、ループ無しで同一のコードを書くことができます。なので、そのコードも。

string[] files1 = Directory.GetFiles("C:\\");
string[] files2 = Directory.GetFiles("D:\\");
// files1,files2を連結したfiles3を作成
List<string> files3 = new List<string>(files1);
files3.AddRange(files2);
// 連結した結果を表示
files3.ToList().ForEach(file => Console.WriteLine(file));



 

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

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