C# で 2つのリストを比較する

Muhammad Maisam Abbas 2024年2月16日
  1. リストを比較して、C# の Linq メソッドとの違いを見つける
  2. C# の List.Contains() 関数でリストを比較して違いを見つける
C# で 2つのリストを比較する

このチュートリアルでは、2つのリストを比較して C# の違いを見つける方法について説明します。

リストを比較して、C# の Linq メソッドとの違いを見つける

次のシナリオを考えてみましょう。list1list2 の 2つのリストがあり、list1 のどの要素が list2 に存在せず、list2 のどの要素が list1 に存在しないかを知りたいと考えています。。これは、Linq の Except() 関数を使用して実行できます。Linq または統合言語クエリは、C# のデータ構造をクエリするために使用されます。Except() 関数は、他のリストに存在しない 1つのリストの要素のセットを返します。次のコード例は、C# の Linq との違いについて 2つのリストを比較する方法を示しています。

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

namespace compare_lists {
  class Program {
    static void Main(string[] args) {
      List<int> list1 = new List<int> { 1, 1, 2, 3, 4 };
      List<int> list2 = new List<int> { 3, 4, 5, 6 };
      List<int> firstNotSecond = list1.Except(list2).ToList();
      var secondNotFirst = list2.Except(list1).ToList();
      Console.WriteLine("Present in List1 But not in List2");
      foreach (var x in firstNotSecond) {
        Console.WriteLine(x);
      }
      Console.WriteLine("Present in List2 But not in List1");
      foreach (var y in secondNotFirst) {
        Console.WriteLine(y);
      }
    }
  }
}

出力:

Present in List1 But not in List2
1
2
Present in List2 But not in List1
5
6

上記のコードの違いについて、リスト list1list2 を比較しました。最初に list1 に存在する要素を保存しましたが、新しいリスト firstNotSecondlist2 には保存しませんでした。次に、list2 に存在するが list1 には存在しない要素を新しいリスト secondNotFirst に保存しました。最後に、firstNotSecond リストと secondNotFirst リストの両方の要素を出力しました。唯一の欠点は、一方のリストで、もう一方のリストに存在しない繰り返し値が 1 回しか出力されないことです。

C# の List.Contains() 関数でリストを比較して違いを見つける

List.Contains() 関数は、要素が C# のリストに存在するかどうかを判断するために使用されます。List.Contains(x) 関数は、要素 x がリストに存在する場合は true を返し、要素 x が存在しない場合は false を返します。Linq で List.Contains() メソッドを使用して、一方のリストに存在し、もう一方のリストには存在しない要素を判別できます。次のコード例は、C# の List.Contains() 関数との違いについて 2つのリストを比較する方法を示しています。

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

namespace compare_lists {
  class Program {
    static void Main(string[] args) {
      List<int> list1 = new List<int> { 1, 2, 3, 4 };
      List<int> list2 = new List<int> { 3, 4, 5, 6 };
      var firstNotSecond = list1.Where(i => !list2.Contains(i)).ToList();
      var secondNotFirst = list2.Where(i => !list1.Contains(i)).ToList();
      Console.WriteLine("Present in List1 But not in List2");
      foreach (var x in firstNotSecond) {
        Console.WriteLine(x);
      }
      Console.WriteLine("Present in List2 But not in List1");
      foreach (var y in secondNotFirst) {
        Console.WriteLine(y);
      }
    }
  }
}

出力:

Present in List1 But not in List2
1
1
2
Present in List2 But not in List1
5
6

上記のコードの違いについて、リスト list1list2 を比較しました。最初に list1 に存在する要素を保存しましたが、新しいリスト firstNotSecondlist2 には保存しませんでした。次に、list2 には存在するが list1 には存在しない要素を新しいリスト secondNotFirst に保存しました。最後に、firstNotSecond リストと secondNotFirst リストの両方の要素を出力しました。ここでは、出力は繰り返し値と同じ回数繰り返されます。値の繰り返しを検討する場合は、この方法を前の方法よりも優先する必要があります。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

関連記事 - Csharp List