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
        } 
     
    业精于勤荒于嬉 行成于思毁于随
  • 相关阅读:
    “回调地址”全攻略 java程序员
    超棒的纯Javascript实现的文件上传功能 Fine uploader java程序员
    帮助你操作数字和处理数字格式的javascript类库 Numeral.js java程序员
    正则表达式 java程序员
    一款非常棒的CSS 3D下拉式菜单实现Makisu java程序员
    Google的全新在线地图API演示网站 More than a map java程序员
    Android中的布局属性 java程序员
    整理一系列优秀的Android开发源码 java程序员
    Lambda表达式select()和where()的区别
    按公式产生随机数、java中的重载、递归、有关计算机计算的问题
  • 原文地址:https://www.cnblogs.com/mistor/p/2800152.html
Copyright © 2011-2022 走看看