当前位置:  开发笔记 > 编程语言 > 正文

在C#中获取两个数组之间的"差异"?

如何解决《在C#中获取两个数组之间的"差异"?》经验,为你挑选了2个好方法。

假设我有这两个数组:

var array1 = new[] {"A", "B", "C"};
var array2 = new[] {"A", "C", "D"};

我想得到两者之间的差异.我知道我可以用几行代码编写这个,但我想确保我没有错过内置语言功能或LINQ扩展方法.

理想情况下,我最终会得到以下三个结果:

不在array1中的项目,但在array2("D")中

不在array2中的项目,但在array1("B")中

两者中的项目

提前致谢!



1> Jon Skeet..:

如果你有LINQ可用,你可以使用ExceptDistinct.您在问题中要求的集合分别为:

- array2.Except(array1)
- array1.Except(array2)
- array1.Intersect(array2)


(当我说"set"时我的意思是"哈希集".)

2> Muad'Dib..:

来自MSDN 101 LINQ样本 ....

public void Linq52() {
    int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
    int[] numbersB = { 1, 3, 5, 7, 8 };

    IEnumerable aOnlyNumbers = numbersA.Except(numbersB);

    Console.WriteLine("Numbers in first array but not second array:");
    foreach (var n in aOnlyNumbers) {
        Console.WriteLine(n);
    }
}

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有