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

C#で2つのリストを比較し、差分を3つ目のリストに格納する方法

C#で2つのリストを比較し、「片方のリストにのみ存在する要素(差分)」を取り出して3つ目のリストに格納したい場合は、LINQの Except() メソッドを使うのが最も簡単です。この記事では、基本的な使い方から完全なサンプルコードまでを解説します。

比較対象となる2つのリストを用意する

まず、比較元となる2つの文字列型リストを作成します。

リスト1

List<string> list1 = new List<string>();
list1.Add("A");
list1.Add("B");
list1.Add("C");
list1.Add("D");

リスト2

List<string> list2 = new List<string>();
list2.Add("C");
list2.Add("D");

ここでは、リスト1に「A」「B」「C」「D」が含まれ、リスト2に「C」「D」が含まれています。この2つを比較すると、期待される差分は「A」と「B」です。

Except()メソッドで差分を求める

Except() メソッドは、最初のリストには存在するものの、2番目のリストには存在しない要素だけを返します。戻り値は IEnumerable<string> 型として受け取ることができます。

IEnumerable<string> list3;
list3 = list1.Except(list2);
foreach (string value in list3) {
    Console.WriteLine(value);
}

このコードを実行すると、コンソールには次のように表示されます。

A
B

完全なサンプルコード

2つのリストを比較して差分を表示する、実行可能な完全なプログラム例は以下の通りです。

using System;
using System.Collections.Generic;
using System.Linq;

public class Demo {
    public static void Main() {
        List<string> list1 = new List<string>();
        list1.Add("A");
        list1.Add("B");
        list1.Add("C");
        list1.Add("D");

        Console.WriteLine("First list...");
        foreach (string value in list1) {
            Console.WriteLine(value);
        }

        Console.WriteLine("Second list...");
        List<string> list2 = new List<string>();
        list2.Add("C");
        list2.Add("D");
        foreach (string value in list2) {
            Console.WriteLine(value);
        }

        Console.WriteLine("Difference in the two lists...");
        IEnumerable<string> list3;
        list3 = list1.Except(list2);
        foreach (string value in list3) {
            Console.WriteLine(value);
        }
    }
}

実行結果

First list...
A
B
C
D
Second list...
C
D
Difference in the two lists...
A
B

ポイントのまとめ

  • Except() を使うには、System.Linq 名前空間を using で追加する必要があります。
  • list1.Except(list2) は「リスト1からリスト2の要素を除いた残り」を返します。逆方向の差分が必要な場合は list2.Except(list1) を使います。
  • Except() の戻り値は遅延評価されるため、必要に応じて ToList() で明示的にリスト化しておくと安全です。
  • 既定では重複する要素は除去され、集合として扱われる点にも注意してください。
  1. Pythonで2つのリストの要素を比較する方法|cmp()関数の使い方と注意点

    Python 2では、cmp()関数を使うことで、2つのリストの要素を比較することができます。この関数は、両方の要素が同じ型であればそのまま比較を実行し、その結果を返します。要素の型が異なる場合は、まずそれらが数値かどうかを確認し、どちらも数値であれば必要に応じて型変換(型強制)を行った上で比較します。片方の要素だけが数値である場合、もう一方の要素の方が「大きい」とみなされます(数値は他のすべての型よりも「小さい」と扱われるためです)。それ以外の場合は、型名をアルファベット順に並べた順序で比較されます。さらに、どちらか一方のリストの末尾に先に達した場合には、より長いリストが「大きい」と判断され

  2. Excelファイルを2つ比較して違いを強調表示する3つの方法

    パソコンの異なるフォルダに、よく似た名前のExcelファイルが2つ保存されていることはありませんか?それらが同じブックの複製なのか、別バージョンのファイルなのかを判断するのは意外と難しいものです。この記事では、Excelがインストールされていない環境でも対応できる、2つのExcelファイルを比較する方法を詳しく解説します。これらの比較ツールを活用すれば、ワークシート内のデータの不整合、古い値、壊れた数式、誤った計算などの問題を素早く発見できます。1. 「並べて表示」機能で2つのExcelシートを比較データ量が少なく、ひと目で内容を確認できる場合は、各ファイルを別ウィンドウで開き、Excel標準