Linq使用Group By经验总结

学习Linq时,经常会遇到Linq使用Group By问题,这里将介绍Linq使用Group By问题的解决方法。

1.计数

 

 var q =  

  from p in db.Products  

  group p by p.CategoryID into g  

  select new {  

  g.Key,  

  NumProducts = g.Count()  

  }; 

语句描述:Linq使用Group By和Count得到每个CategoryID中产品的数量。

说明:先按CategoryID归类,取出CategoryID值和各个分类产品的数量。

2.带条件计数

var q =  

from p in db.Products  

group p by p.CategoryID into g  

select new {  

g.Key,  

NumProducts = g.Count(p => p.Discontinued)  

}; 

语句描述:Linq使用Group By和Count得到每个CategoryID中断货产品的数量。

说明:先按CategoryID归类,取出CategoryID值和各个分类产品的断货数量。 Count函数里,使用了Lambda表达式,Lambda表达式中的p,代表这个组里的一个元素或对象,即某一个产品。

3.Where限制

var q =  

from p in db.Products  

group p by p.CategoryID into g  

where g.Count() >= 10  

select new {  

g.Key,

 ProductCount = g.Count()  

}; 

语句描述:根据产品的―ID分组,查询产品数量大于10的ID和产品数量。这个示例在Group By子句后使用Where子句查找所有至少有10种产品的类别。

说明:在翻译成SQL语句时,在最外层嵌套了Where条件。

4.多列(Multiple Columns)

var categories =  from p in db.Products  

group p by new  

{  

p.CategoryID,

 p.SupplierID  

}  

into g  

select new  

{  

g.Key,  

g  

}; 

语句描述:Linq使用Group By按CategoryID和SupplierID将产品分组。

说明:既按产品的分类,又按供应商分类。在by后面,new出来一个匿名类。这里,Key其实质是一个类的对象,Key包含两个Property:CategoryID、SupplierID。用g.Key.CategoryID可以遍历CategoryID的值。

5.表达式(Expression)

var categories =  from p in db.Products  

group p by new { Criterion = p.UnitPrice > 10 } into g  

select g; 

语句描述:Linq使用Group By返回两个产品序列。第一个序列包含单价大于10的产品。第二个序列包含单价小于或等于10的产品。

说明:按产品单价是否大于10分类。其结果分为两类,大于的是一类,小于及等于为另一类。

时间: 2024-10-29 19:06:34

Linq使用Group By经验总结的相关文章

Linq To Sql学习经验

本文向大家介绍Linq To Sql,可能好多人还不了解Linq To Sql,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西. Linq To Sql是Microsoft开发的针对解决data!=object问题的新技术.在笔者的一系列的文章中,对它已经做了大量的介绍.现在,笔者将从经验的角度,谈谈它的优劣. 1.Linq To Sql的优点 在Linq To Sql推出之前,我们只是把sql语句形成一个string,然后,通过ado.net传给sql server,返回结果集.

最近学到一些linq和面向对象的经验分享

最近学到一些linq和面向对象的经验分享给大家:1,如果界面上有数据和集合了,而这些数据实时性很强的话,可以使用linq 或者泛行对内存里面的数据进行处理.可以减少对数据库的查询压力.匿名类型很好用.可以让你不用创建很多的对象. sql里面能做的事情,大多数linq 也能做到. 比如: var 申请单列表= (from 别名 in 申请单集合 group 别名 by new { 科室名称 = 别名.科室名称, 临床科室 =别名.临床科室, 药品编码= 别名.  药品编码, 药品名称 =  别名.

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使用Group By按CategoryID划分产品. 说明:from p in db.Products 表示从表中将产品对象取出来.group p by p.CategoryID into g表示对p按CategoryID字段归类.其结果命名为g,一旦重新命名,p的作用域就结束了,所以,最

LINQ学习——Group

一.Group的作用 1.Group字句把select的对象根据一些标准进行分组. 2.从查询表达式返回的对象是从查询中枚举分组结果的可枚举类型. 3.每一个分组由一个叫做键的字段区分. 4.每一个分组本身是可枚举类型并可以枚举它的项. 二.LINQ表达式 Group object by field       实例:Student.cs 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 usin

linq中group by

本文导读:LINQ定义了大约40个查询操作符,如select.from.in.where.group 以及order by,借助于LINQ技术,我们可以使用一种类似SQL的语法来查询任何形式的数据.Linq有很多值得学习的地方,这里我们主要介绍Linq使用Group By. 一.Linq对谁适用 linq的语法通过System.Linq下面的Enumerable类提供支持,通过观察他的签名,你就会发现他为IEnumerable<T>实现了一系列的扩展方法,也就是说,只要是实现了IEnumera

Linq DataTable Group By 分组显示人员明细

原始数据: 分组后的输出结果: 源代码: 1 public static void PrintPersons() 2 { 3 //准备数据 4 DataTable dt = new DataTable(); 5 dt.Columns.Add(new DataColumn("ID", typeof(int))); 6 dt.Columns.Add(new DataColumn("UserName", typeof(string))); 7 dt.Columns.Add

atitit. groupby linq的实现(1)-----linq框架选型 java .net php

atitit.  groupby linq的实现(1)-----linq框架选型 java .net php 实现方式有如下 1. Dsl/ Java8 Streams AP ,对象化的查询api ,推荐 1 2. Linq::: like  sql 的dsl 1 1.1. linq4j (jdk6 ok,jdk7 编译错误,又马jar下载) 1 1.2. Quaere:Java上的LINQ(新不上sourcecode) 1 1.3. joSQL也是与Quaere类似的API 2 1.4. .n

linq group join

本篇介绍Linq的Group和Join操作,继续使用<Linq 学习(3) 语法结构>中介绍的数据源. GroupGroup是进行分组操作,同SQL中的Group By类似.原型如下: public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(     this IEnumerable<TSource> source,     Func<TSourc

【转】Linq Group by

http://www.cnblogs.com/death029/archive/2011/07/23/2114877.html 1.简单形式: var q = from p in db.Products group p by p.CategoryID into g select g; 语句描述:Linq使用Group By按CategoryID划分产品. 说明:from p in db.Products 表示从表中将产品对象取出来.group p by p.CategoryID into g表示