码迷,mamicode.com
首页 > 其他好文 > 详细

System.Linq Distinct 方法使用

时间:2020-02-24 18:56:48      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:model   int   一个   string   compare   ret   col   eal   set   

  • 首先看到Distinct 肯定会想当然的直接.Distinct() 这样调用。
  • 需要知道这里的Distinct 是以对象为单位来去重的。当你Select new 映射的时候就算属性值相同也不会进行去重。
  • 单列的使用这里就略过使用了 
  • 多列的使用(比如我需要去重KeyValuePairModel 这个对象 ):
     public class KeyValuePairModel
        {
            public string Name { get; set; }
            public string Code { get; set; }
        }
    // 这里底层会先判断比较的对象是否是同一个对象 首先会调用GetHashCode 如果不是同一对象才会调用Equals方法。
        public class KeyValuePairRowComparer : IEqualityComparer<KeyValuePairModel>
        {
            public bool Equals(KeyValuePairModel t1, KeyValuePairModel t2)
            {
                return (t1.Name == t2.Name && t1.Code == t2.Code);
            }
            public int GetHashCode(KeyValuePairModel t)
            {
                return t.ToString().GetHashCode();
            }
        }

     

  • 使用:
    arealist.Select(c => new KeyValuePairModel() { Code = c.CityCode, Name = c.CityName }).Distinct(new KeyValuePairRowComparer())

     

System.Linq Distinct 方法使用

标签:model   int   一个   string   compare   ret   col   eal   set   

原文地址:https://www.cnblogs.com/chongyao/p/12357899.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!