zoukankan      html  css  js  c++  java
  • 读书笔记 C# Linq查询之group关键字浅析

    在C#中,自从有了Linq查询表达式后,程序员对可被迭代的序列或列表执行一系列的筛选、排序、过滤、分组、查询等操作。本文章所要讲述的是group关键字。

    Linq查询表达式,是以from关键字开头,以select或group关键字结尾,它们之中可以插入where、orderby、join、let甚至附加的from子句。

    group子句返回的是一个IGrouping<TKey,TElement>对象序列,请注意,是对象序列,而不是单个对象。由于group查询产生的IGrouping<TKey,TElement>实质上是列表的列表。因此必须使用嵌套的foreach循环来访问每一组的各个子项。外部循环可以访问每个组的Key,内部循环可以访问每个组的子项。

    每个组的Key可以是任何类型,如字符串、用户自定义的对象或其他。

    可以用如下代码来对序列进行分组:

    //不排序的直接分组
    var
    cityGroup = from city in cities group city by city.Name;
    //通过每组的Key排序的分组
    var cityGroup = from city in cities
                    //先通过每个城市的名称来分组,每组的子项就是group关键字后面的city对象实例
                    group city by city.Name
                    //接着将该组赋给一个变量g
                    into g
                    //然后就可以通过g的Key去排序,g.Key就是by关键字后面的那个参数,即city.Name
                    orderby g.Key
                    //最后选中该组
                    select g
    //自定义group的每个子项
    var cityGroup = from city in cities
    //注意,by关键字后面的参数 一定要和 group关键字后面的参数 有一定的关联,否则无法进行分组 group
    new{city.Name,city.PeopleCount,SomeParam="自定义"} by city.Name

     可以用嵌套的foreach循环来获取每个子项。每个子项其实就是group关键字后面的对象,如city。

    foreach(var theCities in cityGroup){
        //首先获取每个组的Key,在分组时,by后面的那个参数city.Name
        Console.WriteLine("每个组的Key:{0}",theCities.Key);
    
        //接着再次循环,获取每个组的子项,即group后面的那个参数city对象
        foreach(var city in theCities){
           Console.WriteLine("城市名称:{0}",city.Name);
           Console.WriteLine("总人数:{0}",city.PeopleCount);
       }      
    }
  • 相关阅读:
    2018 蓝桥杯省赛 B 组模拟赛(一)-年龄
    在win10系统下安装和卸载Ubuntu系统(为了搞双系统)的各种办法
    2018 CCPC 中国大学生程序设计竞赛-网络选拔赛 1004(D题 )Find Integer(三角函数+费马大定理)
    HDU(杭州电子科技大学) 2614 Beat (BFS写法)
    SQL server用到的SQL语句备份下
    【SQL Server】SQL触发器经验详解
    SQL SERVER 语句大全
    sqlserver 触发器实例代码
    触发器deleted 表和 inserted 表详解
    SQL server触发器中 update insert delete 分别给写个例子被。
  • 原文地址:https://www.cnblogs.com/williamwsj/p/6098592.html
Copyright © 2011-2022 走看看