C#List的使用以及Linq的使用

    class Student     //先构建一个结构
    {
    
    
        public int year;
        public string name;
    }
    List<Student> stus = new List<Student>();
    stus.Add(new Student() {
    
     year = 1996, name = "啊三" });
    stus.Add(new Student() {
    
     year = 1999, name = "牛二" });
    stus.Add(new Student() {
    
     year = 2002, name = "牛三" });
    stus.Add(new Student() {
    
     year = 1994, name = "卡尔文" });
    stus.Add(new Student() {
    
     year = 2004, name = "狗头" });

1.List自带方法:Find 查找单个元素 | FindIndex 查找元素的下标 | FindAll 查找符合条件的元素并返回数组

    Student s = stus.Find(item => item.name == "狗头");//查找符合条件的首个元素  返回的<T> item
    Console.WriteLine("student:" + s.name + " " + s.year);
    int index = stus.FindIndex(item => item.name == "狗头");//查找符合条件的首个元素的下标 返回的 int
    Console.WriteLine("index:" + index);
    var lis = stus.FindAll(item => item.year > 2000);//查找符合条件的所以元素 返回的 list
    foreach (var item in lis)
    {
    
    
        Console.WriteLine("findall" + item.year + " " + item.name);
    }

tips:

   string name = stus.Find(item => item.year == 2002).name;//查找出生时间是2002年的学生,没出问题
   Console.WriteLine("name:" + name);
   string name1 = stus.Find(item => item.year == 2003)?.name ?? "Alice";
   //查询2003很明显会报错,所以使用[ ?.]处理报空,然后用[ ?? ]给默认值。注意:[ .? ]是高版本特性,低版本用不了。
   Console.WriteLine("name1:" + name1);

2.Linq:Where 筛选 | OrderBy 排序 | select 投影

   var list1 = stus.Where(item => item.year < 2000).ToList();//筛选年小于2000的学生
   foreach (var item in list1)
   {
    
    
        Console.WriteLine("where:" + item.year + " " + item.name);
   }

   var list2 = stus.Where(item => item.year < 2000).OrderBy(item => item.year).ToList();//筛选排序年小于2000的学生
   foreach (var item in list2)
   {
    
    
        Console.WriteLine("OrderBy:" + item.year + " " + item.name);
   }

   var list3 = stus.Where(item => item.year < 2000).OrderBy(item => item.year).Select(item => new {
    
     age = 2022 - item.year, nick = item.name }).ToList();//筛选排序年小于2000的学生重新构建结构
   foreach (var item in list3)
   {
    
    
        Console.WriteLine("Select:" + item.age + " " + item.nick);
   }

猜你喜欢

转载自blog.csdn.net/kuilaurence/article/details/126160581