• List之Distinct()


    针对数组可以用List.Distinct(),可以过滤掉重复的内容。

    针对对象中的某个字段只能用Distinct(IEqualityComparer<T>)

    用法:

    复制代码

     1  public class AppIndex:BasePage
     2     {
     3         public void DoGet()
     4         {
     5             List<test11> list_test = new List<test11>();
     6             list_test.Add(new test11() { 
     7             m=1,
     8             v="one"
     9             });
    10             list_test.Add(new test11()
    11             {
    12                 m = 2,
    13                 v = "two"
    14             });
    15             list_test.Add(new test11()
    16             {
    17                 m = 3,
    18                 v = "three"
    19             });
    20             list_test.Add(new test11()
    21             {
    22                 m = 4,
    23                 v = "fornt"
    24             });
    25              list_test.Add(new test11()
    26             {
    27                 m = 4,
    28                 v = "fornt"
    29             });
    30               list_test.Add(new test11()
    31             {
    32                 m = 3,
    33                 v = "fornt"
    34             });
    35               var ss = list_test.Distinct(new Comparint());//这里调用
    36             this.Add("mylist",new Travel.DAL.AppActive().GetList(BaseCode));
    37         }
    38            }
    39 
    40    public class test11
    41    {
    42        public int m { get; set; }
    43        public string v { get; set; }
    44    }
    45    public class Comparint : IEqualityComparer<test11>
    46    {
    47 
    48        public bool Equals(test11 x, test11 y)
    49        {
    50            if (x == null && y == null)
    51                return false;
    52            return x.m==y.m;
    53        }
    54 
    55        public int GetHashCode(test11 obj) {
    56            return obj.ToString().GetHashCode();
    57        }
    58    }
    复制代码
     
     

    同样table 也可以用这个方法。只要一步ASEnumerable()即可

     
     
                var _comPresult = _dt.AsEnumerable().Distinct(new DataTableRowCompare());
                DataTable _resultDt = _comPresult.CopyToDataTable();
     
                _resultDt.AsEnumerable().ToList().ForEach(
                   x =>
                   {
                       Console.WriteLine(x["id"].ToString() + "    " + x["name"].ToString() + "   " + x["address"].ToString());
                   });
     
     
    public class DataTableRowCompare : IEqualityComparer<DataRow>
        {
     
            #region IEqualityComparer<DataRow> 成员
     
            public bool Equals(DataRow x, DataRow y)
            {
                return (x.Field<int>("id") == y.Field<int>("id")); 这个是根据自己的需求写比较字段的
            }
     
            public int GetHashCode(DataRow obj)
            {
                return obj.ToString().GetHashCode();
            }
     
            #endregion
        } 
  • 相关阅读:
    linux TCP数据包重传过程----小结
    linux TCP头部的构造的简单分析
    CentOS 7镜像下载
    JAVAEE——BOS物流项目03:学习计划、messager、menubutton、登陆拦截器、信息校验和取派员添加功能
    JAVAEE——BOS物流项目02:学习计划、动态添加选项卡、ztree、项目底层代码构建
    JAVAEE——BOS物流项目01:学习计划、搭建环境、主页设计(jQuery EasyUI)
    Maven02——回顾、整合ssh框架、分模块开发、私服
    巧妙取法——最小公倍数
    深度优先搜索——地宫取宝
    Maven01——简介、安装配置、入门程序、项目构建和依赖管理
  • 原文地址:https://www.cnblogs.com/itjeff/p/5817587.html
Copyright © 2020-2023  润新知