zoukankan      html  css  js  c++  java
  • 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
        } 
  • 相关阅读:
    eclipse两种注释的快捷键
    为什么我的安卓虚拟机没有虚拟键盘
    windows server2012部署apache项目访问后台管理系统时tomcat就停了是怎么回事
    什么时候你可以考虑离职?遇到这6种情况
    安装wampserver后,在www文件夹下面写php文件,而在网页里输入localhost而无法打开php文件时解决办法汇总
    访问localhost文件下的testmysql.php文件报Not Found
    访问localhost的phpmyadmin出现访问被拒绝
    wamp如何设置数据库的密码
    WAMP不能启动, 一直处于红色图标或者橙色图标的解决办法
    [AngularJS] Decorator a directive
  • 原文地址:https://www.cnblogs.com/itjeff/p/5817587.html
Copyright © 2011-2022 走看看