Returns all distinct values in a collection.
Use IEnumerable.GroupBy()
to create groups for each distinct value in the enumerable.
Use IEnumerable.Where()
to create select only the groups with a count greater than 1
.
Use IEnumerable.Select()
to return the Key
property of each group.
代码实现
using System.Collections.Generic;
using System.Linq;
public static partial class _30s
{
public static IEnumerable<T> DuplicateValues<T>(IEnumerable<T> items)
{
return items
.GroupBy(c => c)
.Where(g => g.Count() > 1)
.Select(i => i.Key);
}
}
使用样例
int[] arr = {1, 2, 1, 3, 2, 4};
_30s.DuplicateValues(arr); // {1, 2}