IEnumerable的基本使用

static void Main(string[] args)
        {
            var stu1 = new Student() { Name = "张三", Age = 18, Sallry = 9000 };
            var stu2 = new Student() { Name = "李四", Age = 15, Sallry = 2000 };
            var stu3 = new Student() { Name = "王五", Age = 13, Sallry = 7000 };
            var stu4 = new Student() { Name = "赵六", Age = 17, Sallry = 4000 };
            var stu5 = new Student() { Name = "孙琦", Age = 18, Sallry = 5000 };

            List<Student> list = new List<Student> { stu1, stu2, stu3, stu4, stu5 };
            var th1 = new Teacher() { TeacherName = "老大" };
            
            th1.students.Add(stu1);
            th1.students.Add(stu3);
            th1.students.Add(stu5);
            var th2 = new Teacher() { TeacherName = "王二" };
            th2.students.Add(stu1);
            th2.students.Add(stu2);
            th2.students.Add(stu4);

            Teacher[] ts = { th1, th2 };         
            Console.WriteLine(ts.Any());
            Console.WriteLine(ts.Any(p=>p.TeacherName==""));

            //var li = list.OrderByDescending(p => p.Age); //倒序  OrderByDescending
            var li = list.OrderBy(p => p.Age);   //正序        OrderBy
            foreach (var item in li)
           {
               Console.WriteLine(item);
           }
           Console.WriteLine("----------------------排序分割线-------------------");
           var li1 = list.OrderByDescending(p => p.Age).ThenByDescending(p=>p.Sallry);//多条件   ThenByDescending/ ThenBy
            foreach (var item in li1)
           {
               Console.WriteLine(item);
           }    
            var li3 = list.Skip(2);  //跳过前一条 Skip(2)
            foreach (var item in li3)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("----------------------分页分割线-------------------");
            var li4 = list.Skip(2).Take(2); ///跳过多少条取多少条    Skip(?).Take(?)
            foreach (var item in li4)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("----------------------差集/并集分割线-------------------");
            //差集
            int[] num1 = { 1, 2, 4, 6 };
            int[] num2 = { 4, 6, 7, 8 };
            var num= num1.Except(num2); //差集    输出num1在num2不存在的数据
            foreach (var item in num)
            {
                Console.WriteLine(item);
            }
            var numAll = num1.Union(num2); //并集    输出num1和num2去重后的元素
            foreach (var item in numAll)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("----------------------分组分割线-------------------");
            IEnumerable<IGrouping<int,Student>> ist= list.GroupBy(p => p.Age);
            foreach (var item in ist)
            {
                Console.WriteLine(item.Key);
                foreach (var deatail in item)
                {
                    Console.WriteLine(deatail);
                }
            }
            Console.WriteLine("----------------------属性集合分割线-------------------");

            var sts = ts.SelectMany(s=>s.students);
            foreach (var item in sts)
            {
                Console.WriteLine(item);   
            }
        }
  class Student
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public decimal Sallry { get; set; }

        public override string ToString()
        {
            return $"名称:{Name}-年龄:{Age}-收入:{Sallry}";
        }   
    }
  class Teacher
    {
        public string TeacherName { get; set; }
        public List<Student> students { get; set; } = new List<Student>();
    }
原文地址:https://www.cnblogs.com/Zingu/p/14680972.html