【问题标题】:Get uniques elements获取独特元素
【发布时间】:2014-06-27 07:58:40
【问题描述】:

我有

int[] array1 = { 1, 2, 3 };
int[] array2 = { 2, 3, 4 };

使用var intersect = array1.Intersect(array2);我得到了

2
3

但我需要得到

  1
  4

您能给我一些建议吗?如何使用 Linq 做到这一点?

【问题讨论】:

    标签: c# linq collections


    【解决方案1】:
    array1.Union(array2).Except(array1.Intersect(array2))
    

    解释:

    1. 首先计算两个序列的集合并集:1, 2, 3, 4
    2. 您正在计算集合的交集:2, 3
    3. 您正在发现所有项目和交集之间的集合差异:1, 4

    【讨论】:

    • 是否有理由使用 Contact 而不是 Union?
    • @m1o2 不,实际上你是对的,Union 会更好。谢谢!
    【解决方案2】:

    试试这个:

        int[] array1 = { 1, 2, 3 };
        int[] array2 = { 2, 3, 4 };
    
        var result = array1.Concat(array2).Except(array1.Intersect(array2));
        foreach (var item in result)
        MessageBox.Show(item.ToString());
    

    输出:

    1

    4

    【讨论】:

    • 这个答案比Sergey 已经提供的贡献多吗?他们在那个答案中讨论了Concat,并意识到Union 更好。为什么要再次发布该解决方案的答案?
    • 但是 sergey 使用 Union,我建议使用 concat,我也没有看到他使用 concat,我认为它给出了相同的结果。
    猜你喜欢
    • 2021-06-20
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多