一尘不染

相反的Intersect()

c#

相交可用于查找两个集合之间的匹配项,如下所示:

// 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
}

阅读 489

收藏
2020-05-19

共1个答案

一尘不染

如前所述,如果您希望得到4,则可以这样进行:

var nonintersect = array2.Except(array1);

如果您想要真正的非相交(也包括1和4),那么就可以做到这一点:

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

这不是性能最高的解决方案,但是对于较小的列表,它应该可以正常工作。

2020-05-19