现在的位置: 首页 > 综合 > 正文

CommonEqualityComparer

2012年01月28日 ⁄ 综合 ⁄ 共 854字 ⁄ 字号 评论关闭

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

 

namespace CitiVelocity.Web.Models

{

    public class Extension

    {

    }

 

    public class CommonEqualityComparer<T, V> : IEqualityComparer<T>

    {

        private Func<T, V> keySelector;

 

        public CommonEqualityComparer(Func<T, V> keySelector)

        {

            this.keySelector = keySelector;

        }

 

        public bool Equals(T x, T y)

        {

            return EqualityComparer<V>.Default.Equals(keySelector(x), keySelector(y));

        }

 

        public int GetHashCode(T obj)

        {

            return EqualityComparer<V>.Default.GetHashCode(keySelector(obj));

        }

    }

 

 

    public static class DistinctExtensions

    {

        public static IEnumerable<T> Distinct<T, V>(this IEnumerable<T> source, Func<T, V> keySelector)

        {

            return source.Distinct(new CommonEqualityComparer<T, V>(keySelector));

        }

    }

 

}

抱歉!评论已关闭.