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 { 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
        } 
     
    业精于勤荒于嬉 行成于思毁于随
  • 相关阅读:
    省市区三级联动,JS实现
    C# 套接字编程:Scoket,我用Scoket做的C# Windows应用程序如下:
    请允许我转载一篇关于套接字的博客:Socket
    C#深入理解AutoResetEvent和ManualResetEvent
    安卓自动化测试案例(跑在MonkeyRunner上)
    安卓自动化测试,贺晓聪之uiautomator设备和选择器~Python详解
    Android自动化测试之Monkeyrunner使用方法及实例
    Android自动化测试之:获取 参数:comonentName 的值方法
    谈谈CSS的浮动问题
    CSS常见兼容性问题总结
  • 原文地址:https://www.cnblogs.com/mistor/p/2800152.html
Copyright © 2011-2022 走看看