LinqExtension.cs 952 B

1234567891011121314151617181920212223242526
  1. namespace ServiceCenter.Extensions
  2. {
  3. /// <summary>
  4. /// Linq 扩展
  5. /// </summary>
  6. public static class LinqExtension
  7. {
  8. /// <summary>
  9. /// 根据指定的属性返回集合中的非重复元素
  10. /// </summary>
  11. /// <typeparam name="TSource">数据源的类型</typeparam>
  12. /// <typeparam name="TKey">数据源需要进行筛选的属性</typeparam>
  13. /// <param name="source">数据源</param>
  14. /// <param name="keySelector">指定属性的函数表达式</param>
  15. /// <returns></returns>
  16. public static IEnumerable<TSource> DistinctItemBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
  17. {
  18. var seenKeys = new HashSet<TKey>();
  19. foreach (var source1 in source)
  20. {
  21. if (seenKeys.Add(keySelector(source1)))
  22. yield return source1;
  23. }
  24. }
  25. }
  26. }