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
