【发布时间】:2020-11-08 16:12:33
【问题描述】:
假设,我有 2 个不同的数组。第一个是
x[] = {0, 1, 2, 3, 4},第二个是y[] = {1, 3, 4}。我期望的输出是z[] = {0, 2}。我如何在 C# 中做到这一点?
注意:我还希望 z[] 元素按升序排列。
【问题讨论】:
标签: c# arrays algorithm compare missing-data
假设,我有 2 个不同的数组。第一个是
x[] = {0, 1, 2, 3, 4},第二个是y[] = {1, 3, 4}。我期望的输出是z[] = {0, 2}。我如何在 C# 中做到这一点?
注意:我还希望 z[] 元素按升序排列。
【问题讨论】:
标签: c# arrays algorithm compare missing-data
你可以使用 Linq 来做到这一点,
int[] x = new int[]{0, 1, 2, 3, 4};
int[] y = new int[]{1, 3, 4};
var result = x.Where(i => !y.Contains(i)).ToArray();
Console.WriteLine(string.Join(", ", result));
使用集合操作Except()
var result = x.Except(y);
如果您使用的是Except(),请阅读以下来自MSDN的注释
这个方法首先返回那些没有出现在 第二。它不会在第二秒返回那些没有出现的元素 在第一。 只返回唯一元素。
【讨论】:
下面的代码 sn-p 给出了两个数组中的排序不匹配的元素作为结果;
int[] x = new int[] { 1, 2, 2, 3, 4, 0 };
int[] y = new int[] { 1, 3, 3, 4, 5 };
int[] result = x.Except(y).Union(y.Except(x)).ToArray();
Array.Sort(result);
Console.WriteLine(string.Join(' ', result)); // Output: 0 2 5
【讨论】: