相交可用于查找两个集合之间的匹配项,如下所示:
// 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 }
如前所述,如果您希望得到4,则可以这样进行:
var nonintersect = array2.Except(array1);
如果您想要真正的非相交(也包括1和4),那么就可以做到这一点:
var nonintersect = array1.Except(array2).Union( array2.Except(array1));
这不是性能最高的解决方案,但是对于较小的列表,它应该可以正常工作。