c# - 找到两个数组之间差异的更好方法

标签 c# arrays linq

<分区>

Possible Duplicate:
Getting the “diff” between two arrays in C#?

有没有更好的方法来获取两个数组的差异?

var a = new int[] { 1, 2, 3 };
var b = new int[] { 2, 3, 4 };

foreach (var d in a.Except(b).Union(b.Except(a)))
    Console.WriteLine(d); // 1 4

最佳答案

您正在寻找 symmetric-difference ,LINQ to Objects 还没有的运算符(从 .NET 4.0 开始)。你完成它的方式非常好 - 尽管你可能想考虑将那一点提取到它自己的方法中。

但是,更有效的方法是使用 HashSet<T>.SymmetricExceptWith 方法。

var result = new HashSet<int>(a);
result.SymmetricExceptWith(b);

foreach (var d in result)
   Console.WriteLine(d); // 1 4

关于c# - 找到两个数组之间差异的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6928532/

相关文章:

arrays - 迭代数组并将元素添加到 Swift 2.2 中的空字典

java - 使用 for 循环填充数组时遇到问题 - java

c - 将指向结构数组的指针设置为等于结构数组

c# - Entity Framework 的集合值参数?

c# - 需要包含()相关实体但没有选择这样做

javascript - 信号 R : How to send a complex object with XmppClient. 发送方法?

c# - 如何从后面的代码将 boolean 值传递给 JavaScript 函数?

c# - FFMPEG缓存如何配置和获取缓存文件名

c# - 使用 itextSharp 从 pdf 中提取文本会更改数字

c# - 使用 Linq 对 XML 进行复杂排序