zoukankan      html  css  js  c++  java
  • Linq学习总结(7)——分组

    LINQ的分组功能是通过group by子句实现的。

    group by的结果是存在一个IGrouping对象中的,含有一个Key/Element对。Key代表的是进行分组的凭据,而Element则是我们需要的数据。

    static void Main(string[] args)
    {
        var nums = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
        var result = from n in nums group n by n % 2;
    
        foreach (var item in result)
        {
            Console.WriteLine(item.Key == 0 ? "偶数" : "奇数");
    
            foreach (var num in item)
            {
                Console.WriteLine(num);
            }
        }
    }

    group by关键字的使用实际是调用的GroupBy扩展方法,它有很多个重载的方法。此外它还有个GroupJoin这个扩展方法。关于它们的使用都可以上MSDN查看一下。

    另外,还有一个扩展方法ToLookup也支持分组,它会创建一个带有键值对的Dictionary。通过Dictionary,你就可以获得一个键值对,而ToLookup所返回的键值对中,值部分本身又是一个对象集合。

    static void Main(string[] args)
    {
        var students = new[]{
            new {name="Lily",age=12},
            new {name="Lucy",age=13},
            new {name="Hank",age=12},
            new {name="Toby",age=13},
            new {name="Jack",age=15}
        };
    
        var groupByAge = students.ToLookup(
            n => n.age,
            m=>m.name
            );
    
        foreach (var group in groupByAge)
        {
            Console.WriteLine(group.Key);
            foreach (var item in group)
            {
                Console.WriteLine("{0,6}",item);
            }
        }
    }
  • 相关阅读:
    javaweb 最简单的分页技术
    Jquery选择器小结
    JSON 初探
    C# GridView 的使用
    C# 操作数据库
    Java中String为什么是不可变
    Eclipse使用技巧小结
    Java File类方法使用详解
    JSP基础语法总结
    JSP取得绝对路径
  • 原文地址:https://www.cnblogs.com/heqichang/p/2129909.html
Copyright © 2011-2022 走看看