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