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

  • 相关阅读:
    Java操作zip压缩和解压缩文件工具类
    Java操作图片的工具类
    使用Jacob操作Wrod文档的工具类代码
    Java计算文件的SHA码和MD5码
    Java 文件名操作的相关工具类
    Java中windows路径转换成linux路径等工具类
    JDBC的批量批量插入
    显示创建一个表的SQL语句
    MySQL中的保留字
    插入到Mysql数据库中的汉字乱码
  • 原文地址:https://www.cnblogs.com/zisezhixin/p/4113930.html
Copyright © 2011-2022 走看看