Linq使用Group By详细分析

开发 后端
这里介绍Linq使用Group By按CategoryID划分产品、Linq使用Group By和Max查找每个CategoryID的最高单价和Linq使用Group By和Min查找每个CategoryID的最低单价等方面。

Linq有很多值得学习的地方,这里我们主要介绍Linq使用Group By,包括介绍Linq简单形式等方面。

1.简单形式:

  1. var q =  
  2. from p in db.Products  
  3. group p by p.CategoryID into g  
  4. select g; 

语句描述:Linq使用Group By按CategoryID划分产品。

说明:from p in db.Products 表示从表中将产品对象取出来。group p by p.CategoryID into g表示对p按CategoryID字段归类。其结果命名为g,一旦重新命名,p的作用域就结束了,所以,***select时,只能select g。

2.***值

  1. var q =  
  2. from p in db.Products  
  3. group p by p.CategoryID into g  
  4. select new {  
  5. g.Key,  
  6. MaxPrice = g.Max(p => p.UnitPrice)  
  7. }; 

语句描述:Linq使用Group By和Max查找每个CategoryID的***单价。

说明:先按CategoryID归类,判断各个分类产品中单价***的Products。取出CategoryID值,并把UnitPrice值赋给MaxPrice。

3.最小值

  1. var q =  
  2. from p in db.Products  
  3. group p by p.CategoryID into g  
  4. select new {  
  5. g.Key,  
  6. MinPrice = g.Min(p => p.UnitPrice)  
  7. }; 

语句描述:Linq使用Group By和Min查找每个CategoryID的***单价。

说明:先按CategoryID归类,判断各个分类产品中单价最小的Products。取出CategoryID值,并把UnitPrice值赋给MinPrice。

4.平均值

  1. var q =  
  2. from p in db.Products  
  3. group p by p.CategoryID into g  
  4. select new {  
  5. g.Key,  
  6. AveragePrice = g.Average(p => p.UnitPrice)  
  7. }; 

语句描述:Linq使用Group By和Average得到每个CategoryID的平均单价。

说明:先按CategoryID归类,取出CategoryID值和各个分类产品中单价的平均值。

5.求和

  1. var q =  
  2. from p in db.Products  
  3. group p by p.CategoryID into g  
  4. select new {  
  5. g.Key,  
  6. TotalPrice = g.Sum(p => p.UnitPrice)  
  7. }; 

【编辑推荐】

  1. LINQ查询操作经验总结
  2. LINQ遍历多个数组深入剖析
  3. Linq查询Access数据文件浅谈
  4. LINQ构建框架设计学习笔记
  5. LINQ重要组成部分简介
责任编辑:佚名 来源: 博客园
相关推荐

2009-09-14 13:50:35

LINQ编程模型

2009-09-14 16:21:34

LINQ To XML

2009-09-09 09:48:43

Linq延迟加载

2009-09-09 13:53:21

Linq表值函数

2009-12-07 15:37:00

WCF控件

2009-09-25 14:23:39

2009-09-28 10:39:01

Hibernate基础

2010-03-08 17:18:46

Linux du命令

2009-06-18 14:00:51

2009-10-10 13:52:57

VB Update方法

2009-11-20 13:11:44

Oracle XML数

2010-01-06 13:50:37

.NET Framew

2010-03-04 09:30:40

Linux动态库

2009-03-24 08:30:54

AndroidGoogle移动os

2009-09-07 13:19:44

C#线程同步

2009-09-03 17:57:06

C#声明事件

2009-12-16 14:09:14

Visual Stud

2010-04-26 18:17:19

Oracle存储过程

2009-09-04 15:43:07

C#流模型

2011-09-24 12:34:03

点赞
收藏

51CTO技术栈公众号