首页 文章

返回唯一值而不删除重复项 - C#

提问于
浏览
3

我知道在删除重复项后,有很多关于在数组中返回唯一值的答案,但是在删除重复项后,数组中的每个元素都不是唯一的吗?我想在删除任何重复项之前只返回唯一的值 . 如果元素在原始数组中重复,我不希望它在我的最终数组中 .

所以这个阵列......

[0, 1, 1, 2, 3, 3, 3, 4]

应该只返回:

[0, 2, 4]

另一种表达方式的方法是删除所有重复项以及所有重复的唯一值 .

我来自JavaScript背景,而且C#语法仍然有些不稳定 . :)

2 回答

  • 6

    最简单的方法是使用LINQ,按值分组,计算每个组中元素的数量,然后返回具有单个值的组的键:

    var singleOccurrences = array.GroupBy(x => x)
                                 .Where(g => g.Count() == 1)
                                 .Select(g => g.Key)
                                 .ToArray();
    

    如果你真的需要这对大输入有效,你可以编写自己的方法来跟踪“具有单个值的元素”和“具有多个值的元素”作为集合 . 我会从这开始:)

  • 6

    您可以使用 GroupBy 方法

    var uniqueNumbers = numbers.GroupBy(x => x)
                       .Where(x => x.Count() == 1)
                       .Select(g => g.Key)
                       .ToArray();
    

    这将基本上对所有数字进行分组,然后将那些包含一个数字的组取出 .

相关问题