zoukankan      html  css  js  c++  java
  • LINQ学习——Group

    一、Group的作用

          1、Group字句把select的对象根据一些标准进行分组

          2、从查询表达式返回的对象是从查询中枚举分组结果的可枚举类型

          3、每一个分组由一个叫做的字段区分。

          4、每一个分组本身是可枚举类型并可以枚举它的项。

    二、LINQ表达式

         Group object by field

          实例:Student.cs

         

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace LINQDemoWinForm
     8 {
     9     class Student
    10     {
    11         public int ID { get;set;}
    12         public string SName { get; set; }
    13         public int Age { get; set; }
    14         public string Country { get; set; }
    15     }
    16 }
    View Code
     1 private void button3_Click(object sender, EventArgs e)
     2         {
     3             //初始化Student数组
     4             Student[] arrStu = new Student[]{
     5                 new Student{ID=1,SName="zhangsan",Age=20,Country="China"},
     6                 new Student{ID=2,SName="lisi",Age=21,Country="Japan"},
     7                 new Student{ID=3,SName="wangwu",Age=23,Country="China"},
     8                 new Student{ID=4,SName="liuliu",Age=24,Country="American"},
     9             };
    10             //方式一、使用LINQ表达式来进行分组
    11             //var query = from stu in arrStu
    12             //            group stu by stu.Country;
    13             //方式二、使用LINQ标准查询运算符来进行分组
    14             //方式一和二的作用是等价的
    15             var query = arrStu.GroupBy(s => s.SName);
    16 
    17             StringBuilder sbRes = new StringBuilder();
    18             //打印
    19             foreach (var item in query)
    20             {
    21                 sbRes.AppendFormat("Country:{0}",item.Key);//每一个分组有一个Key值
    22                 sbRes.AppendLine();
    23                 foreach (var s in item)
    24                 {
    25                     sbRes.AppendFormat("  SName:{0},Age:{1}", s.SName, s.Age);
    26                     sbRes.AppendLine();
    27                 }
    28             }
    29             MessageBox.Show(sbRes.ToString());
    30         }
    View Code
     1    private void button3_Click(object sender, EventArgs e)
     2         {
     3             //初始化Student数组
     4             Student[] arrStu = new Student[]{
     5                 new Student{ID=1,SName="zhangsan",Age=20,Country="China"},
     6                 new Student{ID=2,SName="lisi",Age=21,Country="Japan"},
     7                 new Student{ID=3,SName="wangwu",Age=23,Country="China"},
     8                 new Student{ID=4,SName="liuliu",Age=24,Country="American"},
     9             };
    10             //方式一、使用LINQ表达式来进行分组
    11             var query = from stu in arrStu
    12                         group stu.SName by stu.Country;
    13             //方式二、使用LINQ标准查询运算符来进行分组
    14             //方式一和二的作用是等价的
    15             //var query = arrStu.GroupBy(s => s.SName, s => s.SName);//重载方法,第二个参数是Func<TSource, TElement> elementSelector 选择的字段
    16 
    17             StringBuilder sbRes = new StringBuilder();
    18             //打印
    19             foreach (var item in query)
    20             {
    21                 sbRes.AppendFormat("Country:{0}",item.Key);//每一个分组有一个Key值
    22                 sbRes.AppendLine();
    23                 foreach (var s in item)//这边的item的类型为IEnumerable<string>而不是上例中的IEnumerable<Student>
    24                 {
    25                     sbRes.AppendFormat("  SName:{0}", s);
    26                     sbRes.AppendLine();
    27                 }
    28             }
    29             MessageBox.Show(sbRes.ToString());
    30         }
    View Code
  • 相关阅读:
    js记录
    快速最好响应式布局(CSS3)
    CSS3终极动画制作属性animation
    虚拟机中试用windows 8(视频)
    平板电脑上完美体验Windows 8 (视频)
    面对电磁泄漏您的电脑还安全吗?--计算机设备信息泄漏揭秘
    基于Linux平台Softimage XSI 演示
    为您的Office文档加把锁-ADRMS的安装
    VNC Server模拟攻击实战
    暴力破解FTP服务器技术探讨与防范措施
  • 原文地址:https://www.cnblogs.com/cherish836138981/p/6653350.html
Copyright © 2011-2022 走看看