Union 拡張メソッドで和集合を取得する
(2017/03/14 11:24:23 created.)
Union 拡張メソッドは 2 つのシーケンスの和集合で得られるシーケンスを生成します。Concat 拡張メソッドは重複する要素もそのまま含まれますが、Union 拡張メソッドは重複する要素は含みません。サンプルコードを以下に掲載します。
Program.cs
namespace Tips_Linq
{
using System;
using System.Linq;
class Program
{
static void Main(string[] args)
{
var numbers1 = new int[] { 1, 2, 3 };
Console.WriteLine("コレクションの要素は {{ {0} }} です。", string.Join(", ", numbers1));
var numbers2 = new int[] { 3, 4, 5 };
Console.WriteLine("コレクションの要素は {{ {0} }} です。", string.Join(", ", numbers2));
var concatNumbers = numbers1.Concat(numbers2);
Console.WriteLine("コレクションの要素は {{ {0} }} です。", string.Join(", ", concatNumbers));
var unionNumbers = numbers1.Union(numbers2);
Console.WriteLine("コレクションの要素は {{ {0} }} です。", string.Join(", ", unionNumbers));
Console.ReadKey();
}
}
}
出力結果を見てもわかるように、Concat 拡張メソッドと違って Union 拡張メソッドでは重複する要素が除外されています。
要素が独自クラスなどの場合、要素が重複しているかどうかを比較する方法を IEqualityComparer<TSource> インターフェースとして等値比較子を指定することができます。等値比較子の使い方は「Contains 拡張メソッドで指定した要素が含まれているかどうかを確認する」などを参照してください。
Tweet