C#のQueryable.Unionメソッドで2つのシーケンスの和集合を取得する方法
C#では、QueryableクラスのUnionメソッドを使用することで、2つのシーケンスに対して和集合(Union)演算を実行できます。このメソッドは、両方のシーケンスに含まれるすべての要素を重複なく1つにまとめた結果を返します。
Unionメソッドとは
Unionメソッドは、LINQ(Language Integrated Query)に用意されている標準クエリ演算子の一つです。配列やコレクションなどのシーケンス同士を結合し、重複する要素を自動的に取り除いた新しいシーケンスを生成します。
サンプルデータの準備
ここでは、次の2つの整数型配列を例に説明します。
int[] arr1 = { 29, 40, 15, 55, 70, 30, 90 };
int[] arr2 = { 30, 36, 40, 18, 15, 55, 75 };Unionメソッドの呼び出し方
配列に対してAsQueryable()メソッドを呼び出し、その結果に対してUnionメソッドを適用します。
arr1.AsQueryable().Union(arr2);
完全なサンプルコード
以下は、実際にUnionメソッドを使用して2つの配列の和集合を求め、結果をコンソールに出力する完全なプログラムです。
using System;
using System.Linq;
using System.Collections.Generic;
public class Demo {
public static void Main() {
int[] arr1 = { 29, 40, 15, 55, 70, 30, 90 };
int[] arr2 = { 30, 36, 40, 18, 15, 55, 75 };
IEnumerable<int> res = arr1.AsQueryable().Union(arr2);
foreach (int a in res)
Console.WriteLine("{0} ", a);
}
}実行結果
上記のプログラムを実行すると、次のような出力が得られます。両方の配列に含まれる要素(30、40、15、55など)は1回だけ出力され、重複が排除されていることが確認できます。
29 40 15 55 70 30 90 36 18 75
ポイントまとめ
- Unionメソッドは、2つのシーケンスを結合し、重複する要素を除去した結果を返します。
- 配列などの
IEnumerableに対してAsQueryable()を呼び出すことで、IQueryableとして扱えます。 - 戻り値の型は
IEnumerable<TSource>であり、foreach文などで簡単に反復処理できます。
-
C#のUnionメソッドとは?2つのリストから重複を除いた要素を取得する方法
C#のUnionメソッドとはC#のLINQに含まれるUnionメソッドは、2つのリスト(コレクション)を結合し、重複する要素を取り除いた一意な要素のみを取得するためのメソッドです。数学でいう「和集合」に相当する操作を、わずか1行のコードで実現できます。2つのリストを用意するまず、結合対象となる2つのリストを用意します。var list1 = new List<int>{12, 65, 88, 45}; var list2 = new List<int>{40, 34, 65};Unionメソッドで和集合を取得する次に、Unionメソッドを呼び出して2つのリストの和集合を
-
RubyのArray#zipメソッド徹底解説!2つの配列をスマートに結合する方法
2つの配列を要素ごとに比較して、その違いを見つけたいと思ったことはありませんか? あるいは、各インデックスごとに最大の数値を求めたい、キーのリストと値のリストを組み合わせてハッシュを作りたい――そんな場面にも出会うことがあるでしょう。 …これを「面倒な方法」で実装すると、次のようなコードになります。 例:冗長な書き方 a = [1,2,3,4,5] b = [1,2,3,6,8] c = a.map.with_index { |_, idx| [a[idx], b[idx]] } # [[1, 1], [2, 2], [3, 3], [4, 6], [5, 8]] 確かに動作はしますが