Linq学习(6) Group & Join

本篇介绍Linq的Group和Join操作,继续使用《Linq 学习(3) 语法结构》中介绍的数据源。

Group

Group是进行分组操作,同SQL中的Group By类似。

原型如下:

public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
  this IEnumerable<TSource> source,
  Func<TSource, TKey> keySelector)

它有几个重载,返回类型有两种:IEnumerable<IGrouping<TKey, TSource>> 和 IEnumerable<TResult>。

返回类型为:IEnumerable<IGrouping<TKey, TSource>>

示例:

返回按学号分组学生的成绩

var result = from score in DataSource.Scores
       group score by score.StudentID into scoreGroup
       select scoreGroup;

scoreGroup为IGrouping<TKey, TSource>类型,返回结果为IEnumerable<IGrouping<TKey, TSource>>,既集合的集合,因此输出时需用双重循环。
IGrouping<TKey, TElement>接口定义为:
public interface IGrouping<TKey, TElement> : IEnumerable<TElement>, IEnumerable
{
  TKey Key { get; }
}

其中Key为分组依据的字段。

foreach (var group in result)
{
  //输出分组依据的字段
  Console.WriteLine("\nStudent ID:" + group.Key);
  // 输出组内成员
  foreach (var score in group)
  {
    Console.WriteLine(score);
  }
}
// result:
// Student ID:1
// Student ID:1,Course ID:1,Score:78
// Student ID:1,Course ID:2,Score:60
// ...
// Student ID:2
// Student ID:2,Course ID:1,Score:59
// ...

时间: 2024-10-27 04:10:56

Linq学习(6) Group &amp; Join的相关文章

Linq学习笔记

写在前面 其实在09年就已经学习过Linq了,并被她那优美的语法所吸引,只是现在所在的公司还在使用VS2005在.Net2.0的框架下面的开发,所以Linq也很久没有用过了,最近看部门的同事对这个有些兴趣,所以打算整理点东西出来跟大家一起做个分享. 什么是Linq LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性.已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感知.静态类型等强类型语言的好处.并

一起谈.NET技术,Linq学习笔记

写在前面 其实在09年就已经学习过Linq了,并被她那优美的语法所吸引,只是现在所在的公司还在使用VS2005在.Net2.0的框架下面的开发,所以Linq也很久没有用过了,最近看部门的同事对这个有些兴趣,所以打算整理点东西出来跟大家一起做个分享. 什么是Linq LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性.已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感知.静态类型等强类型语言的好处.并

LINQ TO SQL ——Group by

原文:LINQ TO SQL --Group by 分组在SQL中应用的十分普遍,在查询,统计时都有可能会用到它.LINQ TO SQL中同样具备group的功能,这篇我来讲下LINQ TO SQL中关于group的用法.      说明:            1:group 不一定要用到多表查询中,单表查询也是可以的.            2:基本语法:                1>:group 分组后要取的字段或者是对象;                2>:by 分组对象,可以

Linq学习(5) 集合操作

本篇介绍Linq的集合操作,继续使用<Linq 学习(3) 语法结构>中介绍的数据源. Count/LongCount Count/LongCount 返回结果集中元素的数量,返回类型分别为int/long. 原型为: public static int Count<TSource>(this IEnumerable<TSource> source[, Func<TSource, bool> predicate]) 姓名长度大于四个字符的学生的数量: var

Linq 分组(group by)求和(sum)并且按照分隔符(join)分割列数据

转载:http://www.cnblogs.com/zq281660880/archive/2012/09/26/2704836.html 今天在使用linq处理一下需求时碰到一点小问题,特此记录. 需求:     按照品名相同的进行汇总,数量相加.表号按分号分割显示   1.组织测试数据表 DataTable tableA1 = new DataTable(); tableA1.Columns.AddRange(new DataColumn[] { new DataColumn("品名&quo

linq学习专题

LINQ to SQL语句Union/Intersect/Except介绍 LINQ TO XML之判断不存在行则插入 LINQ to SQL语句(25)之继承 LINQ to SQL语句(24)之视图 LINQ to SQL语句(23)之动态查询 LINQ to SQL语句(22)之DataContext LINQ to SQL语句(21)之用户定义函数 LINQ to SQL语句(20)之存储过程 LINQ to SQL语句(19)之ADO.NET与LINQ to SQL LINQ to S

Linq 入门系列 [Group,Distinct,Union,Concat,Intersect,Except篇]

问题描述 /**////////////////////////////////以下是Group,Distinct,Union,Concat,Intersect,Except的例子和解释/////////////////////////////classProgram{DB#regionDBprivatestaticList<Student>GetStudents(){List<Student>students=newList<Student>{newStudent{N

LINQ查询操作符 LINQ学习第二篇

一.投影操作符 1. Select Select操作符对单个序列或集合中的值进行投影.下面的示例中使用select从序列中返回Employee表的所有列: using (NorthwindDataContext db=new NorthwindDataContext()) {     //查询语法     var query =         from e in db.Employees         where e.FirstName.StartsWith("M")       

LINQ中的group操作

static void Main(string[] args) { var products=new[] { new {ProductName="Apple",Category="Food"}, new {ProductName="Cat",Category="Animal"}, new {ProductName="Dog",Category="Other"}, new {Product