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出 ...
随机推荐
- mvvm的初步思想
1.Object.defineProperty(obj,key,desc); 用法:1.给对象新增属性和特性 2.修改对象属性值和特性 desc(属性特性): 1.enumerable:boolean ...
- Spring bean的作用域以及生命周期
一.request与session的区别 request简介 request范围较小一些,只是一个请求. request对象的生命周期是针对一个客户端(说确切点就是一个浏览器应用程序)的一次请求,当请 ...
- dp复习 背包[礼物]
[问题描述]人生赢家老王在网上认识了一个妹纸,然后妹纸的生日到了,为了表示自己的心意,他决定送她礼物.可是她喜爱的东西特别多,然而他的钱数有限,因此他想知道当他花一定钱数后剩余钱数无法再购买任何一件剩 ...
- MySQL复制从库建立-xtracebackup方式
Percona XtraBackup工具提供了一种在系统运行时执行MySQL数据热备份的方法. Percona XtraBackup在事务系统上执行联机非阻塞,紧密压缩,高度安全的完整备份,因此在计划 ...
- 写在Python学习前
Python是一门非常有意思的语言,不需要太多的语言基础,就可以实现自己想要的操作.许多非计算机专业的学生都可以利用词云分析.分词.画图等实现自己想要的东西.学习Python和学习其他语言一样,需要耐 ...
- 实验吧之【因缺思汀的绕过】(group by with rollup的注入利用)
打开页面,查看源代码,发现存在source.txt(http://ctf5.shiyanbar.com/web/pcat/source.txt),如下: <?php error_reportin ...
- VSCode 安装 code 命令
VSCode 提供 code 命令直接从命令行中打开文件目录,此时需要先安装 code 命令. 1.首先打开 VSCode 2.使用 command + shift + p (注意window 下使用 ...
- 造轮子了!NETCore跨平台UI框架,CPF
CPF(暂时命名)(Cross platform framework),模仿WPF的框架,支持NETCore的跨平台UI框架,暂时不够完善,只用于测试,暂时只支持Windows和Mac.支持数据绑定, ...
- electron调用c#动态库
electron调用c#动态库 新建C#动态库 方法要以异步任务的方式,可以直接包装,也可以写成天然异步 代码如下 public class Class1 { public async Task< ...
- 文件的处理(day09整理)
目录 昨日回顾 二十八.字符编码 1.什么是字符编码 2.字符编码的发展史 3.gbk和gb2312 二十九.python2和python3的区别 python解释器启动的流程 今日内容 三十.文件处 ...