今天偶然看到博客园一篇文章,是对Linq的Distinct的扩展
看这里
其中方法2比较简洁
public static IEnumerable<TSource> DistinctBy<TSource, TKey> (this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
{
HashSet<TKey> seenKeys = new HashSet<TKey>();
foreach (TSource element in source)
{
if (seenKeys.Add(keySelector(element)))
{
yield return element;
}
}
}
调用示例
使用方法如下(针对ID,和Name进行Distinct):
var query = people.DistinctBy(p => new { p.Id, p.Name });
我回想起很久以前博客园的鹤冲天也写过类似的文章
看这里
他主要是用比较器来实现,我觉得比较繁琐,个人推荐使用以上的方法2