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:\r\n");
                foreach(User u in list)
                {
                    Console.WriteLine("\t" + 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},\taddress:{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 }

 

posted on 2017-11-20 23:56  邹敏向日葵  阅读(121)  评论(0编辑  收藏  举报

导航