Intersect() の反対 質問する

Intersect() の反対 質問する

Intersect は、次のように 2 つのコレクション間の一致を見つけるために使用できます。

// Assign two arrays.
int[] array1 = { 1, 2, 3 };
int[] array2 = { 2, 3, 4 };
// Call Intersect extension method.
var intersect = array1.Intersect(array2);
// Write intersection to screen.
foreach (int value in intersect)
{
    Console.WriteLine(value); // Output: 2, 3
}

しかし、私が達成したいのはその逆で、一方のコレクションにはないアイテムをもう一方のコレクションからリストしたいのです。

// Assign two arrays.
int[] array1 = { 1, 2, 3 };
int[] array2 = { 2, 3, 4 };
// Call "NonIntersect" extension method.
var intersect = array1.NonIntersect(array2); // I've made up the NonIntersect method
// Write intersection to screen.
foreach (int value in intersect)
{
    Console.WriteLine(value); // Output: 4
}

ベストアンサー1

前述のように、結果として 4 を取得したい場合は、次のようにします。

var nonintersect = array2.Except(array1);

実際の非交差 (1 と 4 の両方) が必要な場合は、次のようにすればうまくいきます。

var nonintersect = array1.Except(array2).Union( array2.Except(array1));

これは最もパフォーマンスの高いソリューションではありませんが、小さなリストの場合は問題なく動作するはずです。

おすすめ記事