我知道在删除重复项后,有很多关于在数组中返回唯一值的答案,但是在删除重复项后,数组中的每个元素都不是唯一的吗?我想在删除任何重复项之前只返回唯一的值。如果元素在原始数组中重复,我不希望它在我的最终数组中。
所以这个阵列......
[0, 1, 1, 2, 3, 3, 3, 4]
应仅返回:
[0, 2, 4]
另一种表达方式的方法是删除所有重复项以及所有重复的唯一值。
我来自JavaScript背景,并且对C#语法仍然有些不稳定。 :)
答案 0 :(得分:6)
最简单的方法是使用LINQ,按值分组,计算每个组中元素的数量,然后返回具有单个值的组的键:
var singleOccurrences = array.GroupBy(x => x)
.Where(g => g.Count() == 1)
.Select(g => g.Key)
.ToArray();
如果你真的需要这对大输入有效,你可以编写自己的方法,用单个值跟踪"元素"和#34;具有多个值的元素"作为集。我虽然从这开始:)
答案 1 :(得分:6)
您可以使用GroupBy
方法
var uniqueNumbers = numbers.GroupBy(x => x)
.Where(x => x.Count() == 1)
.Select(g => g.Key)
.ToArray();
这将基本上对所有数字进行分组,然后取出那些包含一个数字的组。