Linq利用Distinct去除重复项(可自己指定)

  • A+
所属分类:MVC

Linq利用Distinct去除重复项(可自己指定)

添加一个扩展方法

  1. public static IEnumerable<TSource> DistinctBy<TSource, TKey> (this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)  
  2. {  
  3.     HashSet<TKey> seenKeys = new HashSet<TKey>();  
  4.     foreach (TSource element in source)  
  5.     {  
  6.         if (seenKeys.Add(keySelector(element)))  
  7.         {  
  8.             yield return element;  
  9.         }  
  10.     }  
  11. }  

使用方法如下(针对ID,和Name进行Distinct):

  1. var query = people.DistinctBy(p => new { p.Id, p.Name });  

若仅仅针对ID进行distinct:

  1. var query = people.DistinctBy(p => p.Id);  
钰玺

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: