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开发交流群,用于分享学习心得和讨论相关技术难题。欢迎有兴趣的小伙伴扫码入群,相互学习!

  • 相关阅读:
    codevs 2632 非常好友
    codevs 1213 解的个数
    codevs 2751 军训分批
    codevs 1519 过路费
    codevs 1503 愚蠢的宠物
    codevs 2639 约会计划
    codevs 3369 膜拜
    codevs 3135 River Hopscotch
    数论模板
    JXOJ 9.7 NOIP 放松模拟赛 总结
  • 原文地址:https://www.cnblogs.com/wml-it/p/14836991.html
Copyright © 2011-2022 走看看