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()で明示的にリスト化しておくと安全です。- 既定では重複する要素は除去され、集合として扱われる点にも注意してください。
-
Pythonで2つのリストの要素を比較する方法|cmp()関数の使い方と注意点
Python 2では、cmp()関数を使うことで、2つのリストの要素を比較することができます。この関数は、両方の要素が同じ型であればそのまま比較を実行し、その結果を返します。要素の型が異なる場合は、まずそれらが数値かどうかを確認し、どちらも数値であれば必要に応じて型変換(型強制)を行った上で比較します。片方の要素だけが数値である場合、もう一方の要素の方が「大きい」とみなされます(数値は他のすべての型よりも「小さい」と扱われるためです)。それ以外の場合は、型名をアルファベット順に並べた順序で比較されます。さらに、どちらか一方のリストの末尾に先に達した場合には、より長いリストが「大きい」と判断され
-
Excelファイルを2つ比較して違いを強調表示する3つの方法
パソコンの異なるフォルダに、よく似た名前のExcelファイルが2つ保存されていることはありませんか?それらが同じブックの複製なのか、別バージョンのファイルなのかを判断するのは意外と難しいものです。この記事では、Excelがインストールされていない環境でも対応できる、2つのExcelファイルを比較する方法を詳しく解説します。これらの比較ツールを活用すれば、ワークシート内のデータの不整合、古い値、壊れた数式、誤った計算などの問題を素早く発見できます。1. 「並べて表示」機能で2つのExcelシートを比較データ量が少なく、ひと目で内容を確認できる場合は、各ファイルを別ウィンドウで開き、Excel標準