C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#で2つのシーケンスの差分を取得する方法:Except()メソッドの使い方

C#では、LINQのExcept()メソッドを使うことで、2つのシーケンス(コレクション)の差分を簡単に求めることができます。この記事では、Except()メソッドを使って、片方のシーケンスにのみ存在する要素を抽出する方法を解説します。

2つのシーケンスを準備する

まず、比較対象となる2つのdouble型の配列を用意します。

double[] arr1 = { 10.2, 15.6, 23.3, 30.5, 50.2 };
double[] arr2 = { 15.6, 30.5, 50.2 };

ここでは、arr1には5つの要素が含まれ、arr2にはそのうちの3つの要素が含まれています。

Except()メソッドで差分を取得する

2つの配列の差分を取得するには、Except()メソッドを使用します。このメソッドは、最初のシーケンスから2番目のシーケンスに含まれる要素を除外した結果を返します。

IEnumerable<double> res = arr1.AsQueryable().Except(arr2);

この例では、arr1の中でarr2に存在しない要素、つまり「10.2」と「23.3」が抽出されます。

サンプルコード全体

以下は、Except()メソッドを使った差分取得の完全なサンプルコードです。

using System;
using System.Linq;
using System.Collections.Generic;
class Demo {
   static void Main() {
      double[] arr1 = { 10.2, 15.6, 23.3, 30.5, 50.2 };
      double[] arr2 = { 15.6, 30.5, 50.2 };
      Console.WriteLine("Initial List...");
      foreach(double ele in arr1) {
         Console.WriteLine(ele);
      }
      IEnumerable<double> res = arr1.AsQueryable().Except(arr2);
      Console.WriteLine("New List...");
      foreach (double a in res) {
         Console.WriteLine(a);
      }
   }
}

実行結果

Initial List...
10.2
15.6
23.3
30.5
50.2
New List...
10.2
23.3

ポイントまとめ

  • Except()メソッドは、System.Linq名前空間に含まれる拡張メソッドです。
  • 戻り値はIEnumerable<T>型として返されるため、foreach文などで反復処理できます。
  • デフォルトでは既定の等値比較子を使用して要素が比較されます。カスタムクラスを扱う場合は、IEqualityComparerを実装して渡すことも可能です。
  • 結果には重複した要素は含まれません。

Except()メソッドを活用すれば、データセット間の差分抽出を簡潔なコードで実現できます。集合演算が必要な場面でぜひ活用してみてください。

  1. Androidで2つの日付の差分(日数)を取得する方法【サンプルコード付き】

    はじめに この記事では、Androidアプリで2つの日付の差分(日数)を取得する方法を、実際に動作するサンプルコードとともに解説します。日付の差分計算は、利用期間の表示やイベントまでの残り日数のカウントなど、さまざまな場面で役立つ基本的な処理です。 実装の手順 ステップ1:Android Studioで新規プロジェクトを作成 Android Studioを起動し、メニューから「File」→「New Project」を選択します。必要な項目をすべて入力して、新しいプロジェクトを作成しましょう。 ステップ2:レイアウトファイル(activity_main.xml)の編集 res/layout/ac

  2. C++で3次元空間における2つの平面間の角度を計算する方法

    本記事では、3次元空間内にある2つの平面 P1 と P2 の間の角度を求める方法を解説します。平面の方程式と角度の公式平面 Pi の方程式は、一般に次の形式で表されます。a・x + b・y + c・z + d = 0ここで、係数 (a, b, c) は平面の法線ベクトルを表しています。2つの平面がなす角度を「A」とすると、それぞれの法線ベクトルのなす角として、次の式で求められます。cos A = (a₁a₂ + b₁b₂ + c₁c₂) / (√(a₁² + b₁² + c₁²) × √(a₂² + b₂² + c₂²))つまり、分子は2つの法線ベクトルの内積、分母はそれぞれの法線ベクトルの大