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

ssa*_*kar 3 c# arrays unique duplicates

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

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

[0, 1, 1, 2, 3, 3, 3, 4]
Run Code Online (Sandbox Code Playgroud)

应该只返回:

[0, 2, 4]
Run Code Online (Sandbox Code Playgroud)

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

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

Jon*_*eet 6

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

var singleOccurrences = array.GroupBy(x => x)
                             .Where(g => g.Count() == 1)
                             .Select(g => g.Key)
                             .ToArray();
Run Code Online (Sandbox Code Playgroud)

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


Sel*_*enç 6

你可以使用GroupBy方法

var uniqueNumbers = numbers.GroupBy(x => x)
                   .Where(x => x.Count() == 1)
                   .Select(g => g.Key)
                   .ToArray();
Run Code Online (Sandbox Code Playgroud)

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