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件のみとなります。
コメントを書く