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出 ...
随机推荐
- Window下的VScode快捷键
转载自4ark 全局 Ctrl + Shift + P, F1 显示命令面板 Ctrl + P 快速打开Ctrl + Shift + N 打开新窗口Ctrl + Shift + W 关闭窗口 基本 C ...
- Spring 注册BeanPostProcessor 源码阅读
回顾上一篇博客中,在AbstractApplicationContext这个抽象类中,Spring使用invokeBeanFactoryPostProcessors(beanFactory);执行Be ...
- Linux之常用命令I
一.Linux简介 1)Minix(只为教学,开源的)-->Linux(以前者为模板,添加了一些软件) 2)Linux分为内核版本和发行版本 区别:Linux内核版本就是核心版本,不用最新版本, ...
- Fiddler的安装
相关下载软件(链接:https://pan.baidu.com/s/1HFdFNph6FGHOFtZq09ldpg 提取码:3u3l ) fiddler是基于.net环境的,所以需要先安装.net 安 ...
- [NOIp2013] luogu P1966 火柴排队
磕了瓶魔爪. 题目描述 你有两个长度为 NNN 的数组 a,ba,ba,b,试重新排列 aaa 数组使得S=∑i=1n(ai−bi)2S=\sum_{i=1}^{n}{(a_i-b_i)^2}S=i= ...
- [LUOGU1122] 最大子树和 - 树形动规
题目描述 小明对数学饱有兴趣,并且是个勤奋好学的学生,总是在课后留在教室向老师请教一些问题.一天他早晨骑车去上课,路上见到一个老伯正在修剪花花草草,顿时想到了一个有关修剪花卉的问题.于是当日课后,小明 ...
- eclipse中最有用的10个快捷键
这里列出一些在使用eclipse的过程中最有用的10个快捷键,通过灵活使用这些快捷键可以提高开发效率和开发质量. 1. [ctrl+shift+r]打开资源 这可能是所有快捷键中最省时间的了.这个快捷 ...
- Git推送到多个远程仓库
Git推送到多个远程仓库 Grey 原文地址 准备工作 在码云和Github上分别新建两个不包括任何文件的空仓库(若是两个已经有文件的仓库,请参见关联已经存在的项目) https://github.c ...
- 【RabbitMQ 实战指南】一 RabbitMQ 开发
1.RabbitMQ 安装 RabbitMQ 的安装可以参考官方文档:https://www.rabbitmq.com/download.html 2.管理页面 rabbitmq-management ...
- C# 添加、修改、删除Excel图表数据标签
图表中,图表数据标签以数据化形式表现图表中的特定数据,可增强图表的可读性.我们可以对图表添加数据标签,也可以对已有的数据标签进行修改或者删除,下面将通过C#代码形式来实现. 使用工具:Spire.XL ...