zoukankan      html  css  js  c++  java
  • List操作

    http://blog.csdn.net/qq_23846795/article/details/77092670

    http://blog.csdn.net/qq_23846795/article/details/78392758

    List 去重

    using System;
    using System.Collections.Generic;
    using System.Linq;
    
    namespace NonDuplicateList
    {
        class Program
        {
            static void Main(string[] args)
            {
                List<User> users = new List<User>();
                users.Add(new User("张三", "永丰路299号"));
                users.Add(new User("张三", "上地西路8号"));//重复项,去重后将删掉
                users.Add(new User("李四", "海鹰路甲一号"));
    
                List<User> nonDuplicateList1 = users.Distinct().ToList();//通过User类的Equals实现去重
                List<User> nonDuplicateList2 = users.Where((x,i)=>users.FindIndex(z=>z.name == x.name) == i).ToList();//Lambda表达式去重
                List<User> nonDuplicateList3 = new List<User>();//通过循环方式去重
                foreach(User user in users)
                {
                    if(nonDuplicateList3.Exists(x=>x.name==user.name) == false)
                    {
                        nonDuplicateList3.Add(user);
                    }
                }
    
                foreach(List<User> list in new Object[]{nonDuplicateList1,nonDuplicateList2,nonDuplicateList3})//打印出三个List的元素
                {
                    Console.Write("nonDuplicateList:
    ");
                    foreach(User u in list)
                    {
                        Console.WriteLine("	" + u.ToString());
                    }
                }
                Console.Read();
            }
        }
    
        class User:IEquatable<User>//继承IEquatable接口,实现Equals方法。List就可以使用Distinct去重
        {
            public string name { get; set; }
            string address;
    
            public User(string _name, string _address)
            {
                name = _name;
                address = _address;
            }
    
            public override string ToString()
            {
                return string.Format("name:{0},	address:{1}", name, address);
            }
    
            public bool Equals(User other)
            {
                return this.name == other.name;
            }
            public override int GetHashCode()
            {
                return name.GetHashCode();
            }
        }
    }
    View Code
      1 using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Text;
      5 
      6 namespace ConsoleApplication11
      7 {
      8     class MapCross : IEquatable<MapCross>//继承IEquatable接口,实现Equals方法。List就可以使用Distinct去重  
      9     {
     10         public int Id { get; set; }
     11 
     12         public string Name { get; set; }
     13 
     14         public override string ToString()
     15         {
     16             return "ID: " + Id + "   Name: " + Name;
     17         }
     18         public bool Equals(MapCross other)
     19         {
     20             return this.Name == other.Name;
     21         }
     22         public override int GetHashCode()
     23         {
     24             return Name.GetHashCode();
     25         }
     26     }
     27 
     28     class Program
     29     {
     30         static void Main(string[] args)
     31         {
     32             List<MapCross> list = new List<MapCross>();
     33             //添加
     34             list.Add(new MapCross { Id = 1, Name = "A" });
     35             list.Add(new MapCross { Id = 2, Name = "B" });
     36             list.Add(new MapCross { Id = 2, Name = "B" });
     37             list.Add(new MapCross { Id = 3, Name = "C" });
     38             list.Add(new MapCross { Id = 3, Name = "C" });
     39             list.Add(new MapCross { Id = 4, Name = "D" });
     40             //分组
     41             var query1 = from l in list
     42                         group l by new { l.Id, l.Name } into g
     43                         select new
     44                         {
     45                             Id = g.Select(o => o.Id).Sum(),
     46                             Name = g.Key.Name,
     47                             Count = g.Count(),
     48                         };
     49             //赋值
     50             foreach (var item in query1)
     51             {
     52                     MapCross cross = new MapCross();
     53                     cross.Id = item.Id;
     54                     cross.Name = item.Name;
     55                     list.Add(cross);
     56             }
     57             // 查询 赋值
     58             var newlist = (from a in list
     59                           where a.Name == "C"
     60                           select a).ToList();
     61             foreach (var item in newlist)
     62             {
     63                 Console.WriteLine(item);
     64             }
     65             Console.WriteLine();
     66             //相加
     67             list.AddRange(newlist);
     68             Console.WriteLine("相加");
     69             foreach (var item in list)
     70             {
     71                 Console.WriteLine(item);
     72             }
     73             Console.WriteLine("剔除重复项");
     74             var list1= list.Union(list).ToList();          //剔除重复项 
     75             foreach (var item in list1)
     76             {
     77                 Console.WriteLine(item);
     78             }
     79             Console.WriteLine("保留重复项");
     80             var list2 = list.Concat(newlist).ToList();        //保留重复项
     81             foreach (var item in list2)
     82             {
     83                 Console.WriteLine(item);
     84             }
     85             Console.WriteLine("自身去重复 方法一");
     86             var list3=list.Distinct().ToList();
     87             foreach (var item in list3)
     88             {
     89                 Console.WriteLine(item);
     90             }
     91             Console.WriteLine("自身去重复 方法二");
     92             //Lambda表达式去重  
     93             var list4 = list.Where((x, i) => list.FindIndex(z => z.Name == x.Name) == i).ToList();
     94             foreach (var item in list4)
     95             {
     96                 Console.WriteLine(item);
     97             }
     98             Console.WriteLine("自身去重复 方法三");
     99             var list5 = new List<MapCross>();//通过循环方式去重  
    100             foreach (var u in list)
    101             {
    102                 if (list5.Exists(x => x.Name == u.Name) == false)
    103                 {
    104                     list5.Add(u);
    105                 }
    106             }
    107             foreach (var item in list5)
    108             {
    109                 Console.WriteLine(item);
    110             }
    111             Console.WriteLine("修改");
    112             //修改
    113             foreach (var item in list)
    114             {
    115                 if (item.Name == "B")
    116                     item.Name = "BB";
    117             }
    118             //倒序for 才能删除
    119             for (int i = list.Count - 1; i >= 0; i--)
    120             {
    121                 if (list[i].Name == "C")
    122                     list.Remove(list[i]);
    123             }
    124             //排序
    125             foreach (var item in list.OrderBy(s=>s.Name))
    126             {
    127                 Console.WriteLine(item);
    128             }
    129            //复制
    130             //相减
    131             //关联
    132 
    133             Console.Read();
    134         }
    135     }
    136 }
  • 相关阅读:
    const对象 不能调用非const修饰的成员函数
    Sqlserver 查询 临时字段
    win7 VC6.0 安装 fatal error C1083: Cannot open include file: 'Iphlpapi.h': No such file or directory
    RtlWerpReportException failed with status code :-1073741823
    MFC 去掉CWnd的边框
    阿里云 linux 找回mysql root密码
    IE 内使用ActiveX,写注册表被重定向到如下注册表
    mysqli得到记录数量
    error C4996 The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name
    在MFC主对话框OnInitDialog()中弹出对话框
  • 原文地址:https://www.cnblogs.com/zoumin123/p/7868907.html
Copyright © 2011-2022 走看看