zoukankan      html  css  js  c++  java
  • Distinct 条件去重

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace ZY.Common
    {
       
            public static class CommonHelper
            {
                /// <summary>
                /// 自定义Distinct扩展方法
                /// </summary>
                /// <typeparam name="T">要去重的对象类</typeparam>
                /// <typeparam name="C">自定义去重的字段类型</typeparam>
                /// <param name="source">要去重的对象</param>
                /// <param name="getfield">获取自定义去重字段的委托</param>
                /// <returns></returns>
                public static IEnumerable<T> DistinctBy<T, C>(this IEnumerable<T> source, Func<T, C> getfield)
                {
                    return source.Distinct(new Compare<T, C>(getfield));
                }
            }
            public class Compare<T, C> : IEqualityComparer<T>
            {
                private Func<T, C> _getField;
                public Compare(Func<T, C> getfield)
                {
                    this._getField = getfield;
                }
                public bool Equals(T x, T y)
                {
                    return EqualityComparer<C>.Default.Equals(_getField(x), _getField(y));
                }
                public int GetHashCode(T obj)
                {
                    return EqualityComparer<C>.Default.GetHashCode(this._getField(obj));
                }
            }
           
        
    }
    

      

    得之坦然,失之淡然,争其必然,顺其自然
  • 相关阅读:
    My Tornado Particle Effect
    [zz] 海洋环境的光能传递
    一道算法题
    Alembic
    一些莫名其妙的东东
    Python Q&A
    <<Exceptional C++>> notes
    CG Rendering v.s. Browser Rendering
    Modo
    Katana
  • 原文地址:https://www.cnblogs.com/leegj/p/10019656.html
Copyright © 2011-2022 走看看