LINQ学习——Group
一、Group的作用
1、Group字句把select的对象根据一些标准进行分组。
2、从查询表达式返回的对象是从查询中枚举分组结果的可枚举类型。
3、每一个分组由一个叫做键的字段区分。
4、每一个分组本身是可枚举类型并可以枚举它的项。
二、LINQ表达式
Group object by field
实例:Student.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace LINQDemoWinForm
{
class Student
{
public int ID { get;set;}
public string SName { get; set; }
public int Age { get; set; }
public string Country { get; set; }
}
}
private void button3_Click(object sender, EventArgs e)
{
//初始化Student数组
Student[] arrStu = new Student[]{
new Student{ID=,SName="zhangsan",Age=,Country="China"},
new Student{ID=,SName="lisi",Age=,Country="Japan"},
new Student{ID=,SName="wangwu",Age=,Country="China"},
new Student{ID=,SName="liuliu",Age=,Country="American"},
};
//方式一、使用LINQ表达式来进行分组
//var query = from stu in arrStu
// group stu by stu.Country;
//方式二、使用LINQ标准查询运算符来进行分组
//方式一和二的作用是等价的
var query = arrStu.GroupBy(s => s.SName); StringBuilder sbRes = new StringBuilder();
//打印
foreach (var item in query)
{
sbRes.AppendFormat("Country:{0}",item.Key);//每一个分组有一个Key值
sbRes.AppendLine();
foreach (var s in item)
{
sbRes.AppendFormat(" SName:{0},Age:{1}", s.SName, s.Age);
sbRes.AppendLine();
}
}
MessageBox.Show(sbRes.ToString());
}
private void button3_Click(object sender, EventArgs e)
{
//初始化Student数组
Student[] arrStu = new Student[]{
new Student{ID=,SName="zhangsan",Age=,Country="China"},
new Student{ID=,SName="lisi",Age=,Country="Japan"},
new Student{ID=,SName="wangwu",Age=,Country="China"},
new Student{ID=,SName="liuliu",Age=,Country="American"},
};
//方式一、使用LINQ表达式来进行分组
var query = from stu in arrStu
group stu.SName by stu.Country;
//方式二、使用LINQ标准查询运算符来进行分组
//方式一和二的作用是等价的
//var query = arrStu.GroupBy(s => s.SName, s => s.SName);//重载方法,第二个参数是Func<TSource, TElement> elementSelector 选择的字段 StringBuilder sbRes = new StringBuilder();
//打印
foreach (var item in query)
{
sbRes.AppendFormat("Country:{0}",item.Key);//每一个分组有一个Key值
sbRes.AppendLine();
foreach (var s in item)//这边的item的类型为IEnumerable<string>而不是上例中的IEnumerable<Student>
{
sbRes.AppendFormat(" SName:{0}", s);
sbRes.AppendLine();
}
}
MessageBox.Show(sbRes.ToString());
}
LINQ学习——Group的更多相关文章
- (转)Linq学习笔记
写在前面 最近在看Linq,在博客园看到这篇文章,写的通俗易懂,转来和大家一起做个分享.原文地址http://www.cnblogs.com/goscan/archive/2011/05/05/Lin ...
- C#之Linq学习笔记【转】
写在前面 其实在09年就已经学习过Linq了,并被她那优美的语法所吸引,只是现在所在的公司还在使用VS2005在.Net2.0的框架下面的开发,所以Linq也很久没有用过了,最近看部门的同事对这个有些 ...
- 在LINQ查询中LINQ之Group By的用法
LINQ定义了大约40个查询操作符,如select.from.in.where.group 以及order by,借助于LINQ技术,我们可以使用一种类似SQL的语法来查询任何形式的数据.Linq有很 ...
- linq中group by
本文导读:LINQ定义了大约40个查询操作符,如select.from.in.where.group 以及order by,借助于LINQ技术,我们可以使用一种类似SQL的语法来查询任何形式的数据.L ...
- Linq学习以及简单用法
Linq学习 Linq(language Intergrated Query)即语言集成查询 LINQ是一组语言特性和API,使得你可以使用统一的方式编写各种查询.用于保存和检索来自不同数据源的数据, ...
- Linq学习工具及Lamada表达式
好东西.转载一个.以备学习 Linq学习工具: http://www.linqpad.net/ Lamada表达式: Func<int, int, int> IntPow = (x ...
- Linq使用Group By 1
Linq使用Group By 1 1.简单形式: var q = from p in db.Products group p by p.CategoryID into g select g; 语句描述 ...
- linq学习
最全的linq学习文章: http://www.cnblogs.com/heyuquan/p/Linq-to-Objects.html
- sql的 group by 分组;linq的 group by 分组
先来看看 linq的,下面的一段linq 是 ,在 学生导入数据的时候,我们根据学生的手机号码和学生名称进行分组,如果有重复的,我们就筛选出来,用到了 linq的 group by,注意这里是new出 ...
随机推荐
- redis安装详细
1.cd命令到你的下载文件夹下 2.输入命令下载redis ,可以自己选择下载的路径,redis表示版本号 wget http://download.redis.io/releases/redis ...
- hibernate 搭建框架
需要用的包 Hibernate的日志记录: * Hibernate日志记录使用了一个slf4j: * SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具 ...
- python+selenium自动化框架
---恢复内容开始--- 主要使用的模块: selenium/webdriver模块(须准备Chrome驱动),主要用于调用浏览器实现自动点击. unittest模块,主要用于整合测试用例. xlrd ...
- Pycharm(Mac版)快捷键操作篇
Mac键盘符号和修饰键说明 ⌘ Command ⇧ Shift ⌥ Option ⌃ Control ↩︎ Return/Enter ⌫ Delete ⌦ 向前删除键(Fn+Delete) ↑ 上箭头 ...
- SSL证书自签名使用及监控
前言 证书简介 信息安全越来越受重视,HTTPS已经相当普及,要让我们的HTTP接口支持HTPPS,只需要一个SSL证书就可以啦 全称公钥证书(Public-Key Certificate, PKC) ...
- sql数据文件导入数据库
1.首先通过xshell连接数据库服务器,执行命令mysql -u root -p 命令,按照提示输入密码.连接上数据库. 2.在连接终端上执行命令create database JD_Model; ...
- 从源码的角度彻底搞懂 HandlerMapping 和 HandlerAdapter
彻底搞懂 HandlerMapping和HandlerAdapter 知识点的回顾: 当Tomcat接收到请求后会回调Servlet的service方法,一开始入门Servlet时,我们会让自己的Se ...
- CTF-SSH服务渗透
环境 Kali ip 192.168.56.102 Smb 靶机ip 192.168.56.101 0x01信息探测 首页发现有类似用户名的信息 先记录下来 Martin N Hadi M Jimmy ...
- veil-Evasion免杀使用
Veil-Evasion 是 Veil-Framework 框架的一部分,也是其主要的项目.利用它我们可以生成绕过杀软的 payload kali 上并未安装,下面我们来进行简单的安装.我们直接从 ...
- cmake::helloworld
ubuntu16. cmake安装 apt-get install cmake 1.创建 CMakeLists.txt , main.cpp 2.cmake . 生成 makefile 3.遇到错误c ...