集合演算子

プログラミングC# 第6版 8.3.10

配列同士の共通要素だけを返す

using System;
using System.Linq;

class Program {
    static void Main() {
        int[] nums1 = new int[] {2,4,6,8};
        int[] nums2 = new int[] {4,5,8,9};
        
        var ret = nums1.Intersect(nums2);
        
        foreach(var n in ret) {
            Console.WriteLine("{0}",n);
        }
    }
}
$ main
4
8

配列から重複してる要素を除去します

using System;
using System.Linq;

class Program {
    static void Main() {
        int[] nums = new int[] {2,4,6,8,2,3,5,7,8};
        
        var ret = nums.Distinct();
        
        foreach(var n in ret) {
            Console.WriteLine("{0}",n);
        }
    }
}
$ main
2
4
6
8
3
5
7

配列同士を結合します。ただし重複してる要素は除去されます。

using System;
using System.Linq;

class Program {
    static void Main() {
        int[] nums1 = new int[] {2,4,6,8};
        int[] nums2 = new int[] {4,5,8,9};
        
        var ret = nums1.Union(nums2);
        
        foreach(var n in ret) {
            Console.WriteLine("{0}",n);
        }
    }
}
$ main
2
4
6
8
5
9

処理的にはConcatしてDistinctするのと同じですかね。

対象の配列から、引数で指定した配列に含まれないものだけを返す

using System;
using System.Linq;

class Program {
    static void Main() {
        int[] nums1 = new int[] {2,4,6,8};
        int[] nums2 = new int[] {4,5,8,9};
        
        var ret = nums1.Except(nums2);
        
        foreach(var n in ret) {
            Console.WriteLine("{0}",n);
        }
    }
}
$ main
2
6