zoukankan      html  css  js  c++  java
  • Distinct<TSource>(IEqualityComparer<TSource> comparer) 根据列名来Distinct

    1. DistinctEqualityComparer.cs

    public class DistinctEqualityComparer<T, V> : IEqualityComparer<T>
        {
            private Func<T, V> keySelector;

            public DistinctEqualityComparer(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));
            }
        }

    2. DistinctExtensions.cs

    public static class DistinctExtensions
        {
            public static IEnumerable<T> Distinct<T, V>(this IEnumerable<T> source, Func<T, V> keySelector)
            {
                return source.Distinct(new DistinctEqualityComparer<T, V>(keySelector));
            }
        }

    3. Program.cs

    class Program
        {
            static void Main(string[] args)
            {
                List<Person> personList = new List<Person>(){
                    new Person(){Id = 1, Name = "Steven"},
                    new Person(){Id = 2, Name = "Steven"},
                    new Person(){Id = 3, Name = "Steven"},
                    new Person(){Id = 3, Name = "Steven"},
                };

                List<Person> delegateList = personList.Distinct(x => x.Id).ToList();
            }
        }

  • 相关阅读:
    面试题_day0212
    面试题_day0211
    猫眼的数字解密
    缺口验证码
    mysql替换字段里面的内容
    mysql重复id删除
    追踪你的女朋友。
    淘宝登录验证
    jadx-gui-1.0.0.jar怎么运行?
    Python实现一个进度条
  • 原文地址:https://www.cnblogs.com/zisezhixin/p/4113930.html
Copyright © 2011-2022 走看看