Array.Distinct()留下不同的元素.如何从Array中删除所有重复元素,包括原始元素?
例如,给定此输入数组:
{ Dog, Cat, Mouse, Dog, Dog, Parrot, Mouse, Hound }
Run Code Online (Sandbox Code Playgroud)
我想得到这个输出:
{ Cat, Parrot, Hound }
Run Code Online (Sandbox Code Playgroud)
你可以使用一点Linq:
var singles = myArray
.GroupBy(x => x)
.Where(g => g.Count() == 1)
.SelectMany(g => g);
Run Code Online (Sandbox Code Playgroud)
或者像这样:
var singles = myArray
.GroupBy(x => x)
.Where(g => !g.Skip(1).Any())
.SelectMany(g => g);
Run Code Online (Sandbox Code Playgroud)
GroupBy方法将所有类似的元素收集在一起.Where方法将过滤掉不符合特定条件的组.我提供了两种替代条件,但它们都做同样的事情 - true只有当组中只包含一个元素时它们才会返回:
g.Count() == 1计算每个组中元素的数量,true如果结果等于1则返回.!g.Skip(1).Any()true如果第一个之后没有元素,则返回.这实际上比g.Count() == 1因为它不需要枚举组中的所有元素更有效,但它对某些读者来说有点混乱,所以在将其引入生产代码之前要三思而后行.SelectMany将返回结果集合中的所有元素.由于每个组中只有一个元素,因此只剩下那些不重复的元素.| 归档时间: |
|
| 查看次数: |
1006 次 |
| 最近记录: |