【问题标题】:Unmatched elements in 2 different Arrays [duplicate]2个不同数组中的不匹配元素[重复]
【发布时间】: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


【解决方案1】:

你可以使用 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的注释

这个方法首先返回那些没有出现在 第二。它不会在第二秒返回那些没有出现的元素 在第一。 只返回唯一元素。

.Net Fiddle

【讨论】:

    【解决方案2】:

    下面的代码 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
    

    【讨论】:

      猜你喜欢
      • 2017-03-25
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      • 2021-03-19
      • 2018-12-31
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多