zoukankan      html  css  js  c++  java
  • LINQ基础—GroupBy子句

    LINQ基础—GroupBy子句

    一、简介

    group子句返回一个IGrouping(T Key,T element)对象序列,编译时,group子句被转换成对GroupBy方法的调用。

    二、案例

    案例一:

    根据首字母分组,并打印到控制台

    //数据源
    string[] fruits = { "apple", "banana", "peach", "orange", "melon", "lemon" };
    
    //分组查询的查询语句
    var query = from f in fruits
                group f by f[0];
    
    //执行查询
    foreach (var letters in query)
    {
        Console.WriteLine("words that start with letter:" + letters.Key);
        foreach (var word in letters)
        {
            Console.WriteLine(word);
        }
    }

    分析:

    首先遍历字符串数组中的每个字符串,然后根据每个字符串的首字母进行分组,返回结果.

    案例二:

    var query = from f in fruits
                 group f by f[0] into g
                 where g.Key == 'p' || g.Key == 'b'
                 select g;

    分析:

    如果您想要对每个组执行附加查询操作,则可以使用into上下文关键字指定一个临时标识符。使用into时,必须继续编写该查询,并最终用一个select语句或另一个group子句结束该查询。

    案例三:

     string[] strs = { "胡广成", "张国荣", "刘德华", "故国冰封", "万里雪飘", "AAA", "胡翰轩", "张杰" };
                var list5 = strs
                    //.Where(a => a.Length == 3)
                    .Select(item => item)
                    .GroupBy(item => item.Length);//分组   分组依据是字符串的长度
                foreach (var item in list5)
                {
                    Console.WriteLine("----------------");
                    Console.WriteLine($"分组字段是{item.Key}");  //item.Key是分组依据 显示分组字段
                    foreach (var items in item)//内层循环遍历分组项
                    {
                        Console.WriteLine(items);
                    }
                }

    分析:

    按照名字的长度进行分组显示。

    三、多字段分组示例

    GroupBy(x => new { x.a , x.b, x.c }).Select( x=> ( new Class名 { a=x.Key.a , b=x.Key.b , c = x.Key.c } ))

    技术的发展日新月异,随着时间推移,无法保证本博客所有内容的正确性。如有误导,请大家见谅,欢迎评论区指正!
    我创建了一个.NET开发交流群,用于分享学习心得和讨论相关技术难题。欢迎有兴趣的小伙伴扫码入群,相互学习!

  • 相关阅读:
    文本切换器(TextSwitcher)的功能和用法
    图像切换器(ImageSwitcer)的功能与用法
    ViewSwitcher的功能与用法
    HTTP协议-get请求与post请求的区别
    HTTP协议缓存
    HTTP协议详解
    Vue.js----更换头像不实时更新问题
    Vue.js----date与时间戳的转换(unixTime)Moment.js让日期处理变得更简单
    Let's Encrypt 免费通配 https 签名证书 安装方法
    小程序Openid 获取,服务器 encryptedData 解密 遇到的坑
  • 原文地址:https://www.cnblogs.com/wml-it/p/14836991.html
Copyright © 2011-2022 走看看