• LINQ 学习路程 -- 查询操作 GroupBy ToLookUp


    Grouping OperatorsDescription
    GroupBy GroupBy操作返回根据一些键值进行分组,每组代表IGrouping<TKey,TElement>对象
    ToLookup ToLookup is the same as GroupBy; the only difference is the execution of GroupBy is deferred whereas ToLookup execution is immediate.

    IList<Student> studentList = new List<Student>() { 
            new Student() { StudentID = 1, StudentName = "John", Age = 18 } ,
            new Student() { StudentID = 2, StudentName = "Steve",  Age = 21 } ,
            new Student() { StudentID = 3, StudentName = "Bill",  Age = 18 } ,
            new Student() { StudentID = 4, StudentName = "Ram" , Age = 20 } ,
            new Student() { StudentID = 5, StudentName = "Abram" , Age = 21 } 
        };
    
    var groupedResult = from s in studentList
                        group s by s.Age;
    
    //iterate each group        
    foreach (var ageGroup in groupedResult)
    {
        Console.WriteLine("Age Group: {0}", ageGroup .Key); //Each group has a key 
                 
        foreach(Student s in ageGroup) // Each group has inner collection
            Console.WriteLine("Student Name: {0}", s.StudentName);
    }

     可以使用foreach遍历group,每个Group包含一个key和内部的集合

    IList<Student> studentList = new List<Student>() { 
            new Student() { StudentID = 1, StudentName = "John", Age = 18 } ,
            new Student() { StudentID = 2, StudentName = "Steve",  Age = 21 } ,
            new Student() { StudentID = 3, StudentName = "Bill",  Age = 18 } ,
            new Student() { StudentID = 4, StudentName = "Ram" , Age = 20 } ,
            new Student() { StudentID = 5, StudentName = "Abram" , Age = 21 } 
        };
    
    var groupedResult = studentList.GroupBy(s => s.Age);
    
    foreach (var ageGroup in groupedResult)
    {
        Console.WriteLine("Age Group: {0}", ageGroup.Key);  //Each group has a key 
                 
        foreach(Student s in ageGroup)  //Each group has a inner collection  
            Console.WriteLine("Student Name: {0}", s.StudentName);
    }

    ToLookup和GroupBy一样,唯一不同的是GroupBy是延迟执行,而ToLookup是立即执行 

    IList<Student> studentList = new List<Student>() { 
            new Student() { StudentID = 1, StudentName = "John", Age = 18 } ,
            new Student() { StudentID = 2, StudentName = "Steve",  Age = 21 } ,
            new Student() { StudentID = 3, StudentName = "Bill",  Age = 18 } ,
            new Student() { StudentID = 4, StudentName = "Ram" , Age = 20 } ,
            new Student() { StudentID = 5, StudentName = "Abram" , Age = 21 } 
        };
    
    var lookupResult = studentList.ToLookup(s => s.age);
    
    foreach (var group in lookupResult)
    {
        Console.WriteLine("Age Group: {0}", group.Key);  //Each group has a key 
                 
        foreach(Student s in group)  //Each group has a inner collection  
            Console.WriteLine("Student Name: {0}", s.StudentName);
    }
           

    注意:GroupBy和ToLookup返回一个集合(包含key,根据key分组的内部集合)

  • 相关阅读:
    02:AWT介绍
    01:GUI编程简介
    业余草 SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)
    业余草 SpringCloud教程 | 第五篇: 路由网关(zuul)(Finchley版本)
    业余草 SpringCloud教程 | 第四篇:断路器(Hystrix)(Finchley版本)
    业余草 SpringCloud教程 | 第三篇: 服务消费者(Feign)(Finchley版本)
    业余草 SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)(Finchley版本)
    业余草 SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(Finchley版本)
    业余草分享2018最新面试题总结
    业余草分享面试题,JVM结构、GC工作机制详解
  • 原文地址:https://www.cnblogs.com/lanpingwang/p/6602449.html
Copyright © 2020-2023  润新知