[LINQ][C#] UnionとConcatでデータを連結

[LINQ][C#] UnionとConcatでデータを連結

LINQでデータを連結させる方法

LINQを使い複数のデータソースを連結させることができます。SQLでいうところのUNIONがLINQでもUnion、UNION ALLに該当するのがConcatです。

まずはUnionで配列を連結させてみます。

// データ
string[] data1 = { "太郎", "次郎" };
string[] data2 = { "三郎", "四郎", "五郎" };

// Union
var result = data1.Union(data2);

// 確認
foreach (var item in result)
{
    Console.WriteLine(item);
}

次に適当なクラスのリストをConcatで連結させてみます。

// データ
var data1 = new List<object>()
{
    new { Name = "太郎", Age = 30},
    new { Name = "次郎", Age = 25},
    new { Name = "三郎", Age = 20},
};
var data2 = new List<object>()
{
    new { Name = "太郎", Age = 30},
    new { Name = "四郎", Age = 15},
    new { Name = "五郎", Age = 10},
};

// Union(Concat)
//var result = data1.Union(data2);
var result = data1.Concat(data2);

// 確認
foreach (var item in result)
{
    Console.WriteLine(item);
}

太郎のデータが重複していますが、Concatで連結させると重複データがそのまま連結されます。Unionだと重複した太郎のデータが1件のみとなります。

Linqカテゴリの最新記事