• 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 { getset; }
    43        public string v { getset; }
    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
        } 
     
    业精于勤荒于嬉 行成于思毁于随
  • 相关阅读:
    【Selenium04篇】python+selenium实现Web自动化:文件上传,Cookie操作,调用 JavaScript,窗口截图
    【Selenium03篇】python+selenium实现Web自动化:元素三类等待,多窗口切换,警告框处理,下拉框选择
    【Selenium02篇】python+selenium实现Web自动化:鼠标操作和键盘操作!
    【Selenium01篇】python+selenium实现Web自动化:搭建环境,Selenium原理,定位元素以及浏览器常规操作!
    面试官看到一定会打我---软件测试工程师面试套路和暗语灵魂解密
    十年测试老鸟告诉你--自动化测试选JAVA还是选Python--写给还在迷茫中的朋友
    华为十年测试老鸟教您如何便写高质量的自动化测试工程师简历--看完必有所获
    工作中常用的Android系统ADB命令收集
    自动化测试中的三类等待深入剥析
    JAVA自动化之Junit单元测试框架详解
  • 原文地址:https://www.cnblogs.com/mistor/p/2800152.html
Copyright © 2020-2023  润新知