(C#)List 操作总结 -- 学习笔记

1:统计list 内重复值的数量

1 List<int> list = new List<int>() { 12, 12, 13, 13, 14, 15, 15, 15 };
2 
3 var g = list.GroupBy(i => i);
4 
5 foreach (var item in g)
6 {
7 Console.WriteLine("Value:{0} , Count:{1}", item.Key, item.Count());
8 }

 结果:

1 Value:12 , Count:2
2 Value:13 , Count:2
3 Value:14 , Count:1
4 Value:15 , Count:3

 

2:统计list内某个值的数量

1 list.FindAll(delegate(int n) { return n == 100; }).Count
2 
3 List<int> list = new List<int>();
4             list.Add(100);
5             list.Add(100);
6             list.Add(100);
7             list.Add(100);
8             list.Add(100);
9             MessageBox.Show(list.FindAll((ex) => { return ex == 100; }).Count.ToString());

 

3.List 排序-采用自定义Sort比较器和Linq

 1 class Persion
 2     {
 3         public string name;
 4         public int age;
 5 }
 6 //自定义Sort方法
 7 private static void sortListClass()
 8         {
 9             Persion p1 = new Persion() { name = "huyong", age = 27 };
10             Persion p2 = new Persion() { name = "tansha", age = 25 };
11             List<Persion> listPersion = new List<Persion>();
12             listPersion.Add(p1);
13             listPersion.Add(p2);
14             listPersion.Sort(sortage);
15             foreach (var item in listPersion)
16             {
17                 Console.WriteLine(item.name + ":" + item.age);
18             }
19         }
20         static int sortage(Persion x, Persion y)
21         {
22             if (x.age < y.age) return -1;                //按age从大到小 降序排列
23             else if (x.age == y.age) return 0;
24             else return 1;
25         }
26 //linq方法 27 private static void sortLinq() 28 { 29 Persion p1 = new Persion() { name = "huyong", age = 27 }; 30 Persion p2 = new Persion() { name = "tansha", age = 25 }; 31 Persion p3 = new Persion() { name = "tansha", age = 27 }; 32 List<Persion> listPersion = new List<Persion>(); 33 listPersion.Add(p1); 34 listPersion.Add(p2); 35 listPersion.Add(p3); 36 37 var lList = from t in listPersion where (t.age == 27) orderby t.name ascending select t; 38 foreach (var item in lList) 39 { 40 Console.WriteLine(item.name + ":" + item.age); 41 } 42 }

 

4.用Linq将两个list合并为一个list

 1 //linq合并两个list,根据某一相同字段
 2 private static void mergeList()
 3         {
 4             Persion p1 = new Persion() { name = "hy", province = "jx" };
 5             Persion p2 = new Persion() { name = "tansha", province = "hn" };
 6             Persion p3 = new Persion() { name = "ht", province = "gd" };
 7             List<Persion> listPersion = new List<Persion>();
 8             listPersion.Add(p1);
 9             listPersion.Add(p2);
10             listPersion.Add(p3);
11 
12             Persion p11 = new Persion() { name = "hy", age = 23, sex = "" };
13             Persion p21 = new Persion() { name = "tansha", age = 12, sex = "" };
14             Persion p31 = new Persion() { name = "ht", age = 7, sex = "" };
15             List<Persion> listPersion2 = new List<Persion>();
16             listPersion2.Add(p11);
17             listPersion2.Add(p21);
18             listPersion2.Add(p31);
19 
20             //linq合并两个list,根据某一相同字段
21             var list = from pp1 in listPersion
22                        join pp2 in listPersion2 on pp1.name equals pp2.name
23                        select new Persion
24                        {
25                            name = pp1.name,
26                            province = pp1.province,
27                            age = pp2.age,
28                            sex = pp2.sex
29                        };
30             foreach (var item in list)
31             {
32                 Console.WriteLine(item.name + ":" + item.age + ":" + item.sex + ":" + item.province);
33             }
34         }

 

5.对List里面的某个数据进行操作并保存

lists.Where(q =>q.SellChannelId == ((int)SellChannelType.PB).ToString()).ToList().ForEach(q => q.index = 10);

 

6.List<T>转化为IQueryable<T>

  不能直接转换,

  IQueryable在数据库端中查询,

  IEnumerable在内存上查询。

  List<T>支持后者。可以用 list.AsQueryable<T>转换。

 

7.使用LINQ从List<T>集合中删除指定集合元素 

 实体类(Author):

1 public class Author
{
2 public int id{get;set;} 3 public string firstname{get;set;} 4 public string lastname {get;set;} 5 }

比如有如下的LINQ查询语句:

  1 var authors = from x in authorsList select x; 

其中,需要从查询集合中删除 firstname=’Bob’ 的所有用户,应该如何实现呢?

方案一:

1 authorsList = authorsList.Where(x => x.FirstName != "Bob").ToList();
2 //或者
3 authorsList.RemoveAll(x => x.firstname == "Bob");

方案二:

 1 var authorsList = new List<Author>()
 2 {
 3     new Author{ Firstname = "Bob", Lastname = "Smith" },
 4     new Author{ Firstname = "Fred", Lastname = "Jones" },
 5     new Author{ Firstname = "Brian", Lastname = "Brains" },
 6     new Author{ Firstname = "Billy", Lastname = "TheKid" }
 7 };
 8 
 9 var authors = authorsList.Where(a => a.Firstname == "Bob");
10 authorsList = authorsList.Except(authors).ToList();
11 authorsList = authorsList.Except(authorsList.Where(a=>a.Firstname=="Billy")).ToList();

 

8.清空List集合中的元素对象,将之重置为一个初始化的List集合对象,可以使用List集合的扩展方法Clear()方法,此方法将清空List集合中所有的元素对象,清空后List集合中的元素个数为0。例如有个List<int>的集合list1,内部存储10个数字,清空list1中的元素可使用下列语句:

1 List<int> list1 = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
2 
3 list1.Clear();

9. list<string> 存储的日期信息按时间排序,可以使用 List 的 OrderBy() 方法,如下代码:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4  
 5 namespace Demo
 6 {
 7     class Program
 8     {
 9         static void Main(string[] args)
10         {
11             List<string> list = new List<string>();
12             list.Add("2016年6月29日");
13             list.Add("2016年7月6日");
14             list.Add("2016年7月13日");
15             list.Add("2016年7月20日");
16             list.Add("2016年7月27日");
17             list.Add("2016年6月28日");
18  
19             var result = list.OrderBy(r => DateTime.Parse(r)).ToList();
20  
21             result.ForEach(r => Console.WriteLine(r));
22              
23             Console.ReadKey();
24         }
25     }
26 }

 

转载自:

https://www.cnblogs.com/peterYong/p/10881979.html

https://www.cnblogs.com/zuochanzi/p/7418069.html 

https://www.50bit.cn/News/Index/6401.html

 

posted @ 2019-12-26 19:14  道友、请留步  阅读(2070)  评论(0编辑  收藏  举报