假设我有这两个数组:
var array1 = new[] {"A", "B", "C"}; var array2 = new[] {"A", "C", "D"};
我想得到两者之间的差异.我知道我可以用几行代码编写这个,但我想确保我没有错过内置语言功能或LINQ扩展方法.
理想情况下,我最终会得到以下三个结果:
不在array1中的项目,但在array2("D")中
不在array2中的项目,但在array1("B")中
两者中的项目
提前致谢!
如果你有LINQ可用,你可以使用Except
和Distinct
.您在问题中要求的集合分别为:
- array2.Except(array1) - array1.Except(array2) - array1.Intersect(array2)
来自MSDN 101 LINQ样本 ....
public void Linq52() { int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 }; int[] numbersB = { 1, 3, 5, 7, 8 }; IEnumerableaOnlyNumbers = numbersA.Except(numbersB); Console.WriteLine("Numbers in first array but not second array:"); foreach (var n in aOnlyNumbers) { Console.WriteLine(n); } }