C# List(リスト)とList(リスト)の差分を取得する

  • 作成日 2020.11.22
  • 更新日 2022.03.04
  • C#
C# List(リスト)とList(リスト)の差分を取得する

C#で、Exceptを使用して、List(リスト)とList(リスト)の差分を取得するサンプルコードを記述してます。

環境

  • OS windows10 pro 64bit
  • Microsoft Visual Studio Community 2019 Version 16.7.1

List(リスト)とList(リスト)の差分を取得

Exceptを使用して、List(リスト)とList(リスト)の差分を取得します。

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

namespace testapp
{
    class Program
    {


        static void Main(string[] args)
        {

            var lst1 = new List<int> { 1, 2, 3, 4, 5 };
            var lst2 = new List<int> { 1, 3, 4 };

            var lst3 = lst1.Except<int>(lst2);

            // 結果
            foreach (int i in lst3)
            {
                Console.Write("{0} ", i); // 2 5
            }

        }

    }
}

ちなみに、結果の表示は「foreach」ではなく「Linq」を使用することもできます。

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

namespace testapp
{
    class Program
    {


        static void Main(string[] args)
        {

            var lst1 = new List<int> { 1, 2, 3, 4, 5 };
            var lst2 = new List<int> { 1, 3, 4 };

            var lst3 = lst1.Except<int>(lst2);

            Console.WriteLine(String.Join(" ", from x in lst3 select x));

        }

    }
}

ラムダ演算子でも同じです。

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

namespace testapp
{
    class Program
    {


        static void Main(string[] args)
        {

            var lst1 = new List<int> { 1, 2, 3, 4, 5 };
            var lst2 = new List<int> { 1, 3, 4 };

            var lst3 = lst1.Except<int>(lst2);

            Console.WriteLine(String.Join(" ", lst3.Select(x => x)));

        }

    }
}