28.01.2013

Расширения для LINQ - morelinq. Как написать расширение LINQ DistinctBy.

Библиотека методов LINQ, которых так не хватало - morelinq.
В частности, очень пригодился DistinctBy.
Тем не менее, DistinctBy очень просто реализовать:
public static IEnumerable<T> DistinctBy<T, K> (this IEnumerable<T> obj, Func<T, K> keySelector)
{
 HashSet<K> keys = new HashSet<K>();
 foreach (T element in obj)
  if (keys.Add(keySelector(element)))
   yield return element;
}

Комментариев нет:

Отправить комментарий