分组是指根据一个特定的值将序列中的值或元素进行分组。LINQ只包含一个分组操作符:GroupBy。

GroupBy

1>. 原型定义

public static IQueryable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(this IQueryable<TSource> source, Expression<Func<TSource, TKey>> keySelector);

2>. 示例

var expr = from p in context.Products
group p by p.CategoryID; foreach (var item in expr)
{
foreach (var p in item)
{
Console.WriteLine(p.ProductName);
}
}
var expr = context.Cities.GroupBy(c => c.ProvinceID);
var expr = from p in context.Products
group new { p.ProductID, p.CategoryID, p.ProductName }
by p.CategoryID;
var expr = context.Products
.GroupBy(p => p.CategoryID,
p => new
{
p.ProductID,
p.CategoryID,
p.ProductName
});

  根据产品的分类ID分组,查询产品数大于5的分类ID和产品数:

var expr = from p in context.Products
group p by p.CategoryID into g
where g.Count() >
orderby g.Count() descending
select new
{
分类ID = g.Key,
产品数 = g.Count()
};
SELECT
[GroupBy1].[K1] AS [CategoryID],
[GroupBy1].[A3] AS [C1]
FROM ( SELECT
[Extent1].[CategoryID] AS [K1],
COUNT(1) AS [A1],
COUNT(1) AS [A2],
COUNT(1) AS [A3]
FROM [dbo].[Product] AS [Extent1]
GROUP BY [Extent1].[CategoryID]
) AS [GroupBy1]
WHERE [GroupBy1].[A1] > 5
ORDER BY [GroupBy1].[A2] DESC
var expr = from p in context.Products
group p by p.CategoryID into g
select new
{
CategoryID = g.Key,
ProductCount = g.Count()
};
var expr = from p in context.Products
group p by p.CategoryID into g
select new
{
CategoryID = g.Key,
TotalUnitsInStock = g.Sum(p => p.UnitsInStock)
};
var expr = from p in context.Products
group p by p.CategoryID into g
select new
{
CategoryID = g.Key,
CheapestUnitPrice = g.Min(p => p.UnitPrice)
};
var expr = from p in context.Products
group p by p.CategoryID into g
let cheapestUnitPrice = g.Min(p => p.UnitPrice)
select new
{
CategoryID = g.Key,
CheapestProducts = g.Where(p => p.UnitPrice == cheapestUnitPrice)
};

LINQ系列:Linq to Object分组操作符的更多相关文章

  1. LINQ系列目录

    1. LINQ准备 1.1 C#中与LINQ相关特性 2. LINQ to Object 2.1 LINQ to Object投影操作符(Select/SelectMany/Let) 2.2 LINQ ...

  2. C# ~ 从 XML 到 Linq 到 Linq to XML

    .XML 可扩展标记语言 (Extensible Markup Language), 标记 (markup) 是关键部分,是标准通用标记语言 (Standard Generalized Markup ...

  3. LINQ系列:Linq to Object集合操作符

    集合操作符对元素的集合或序列集合进行操作,并返回一个集合.LINQ共有4种集合查询操作符:Distinct.Union.Intersect和Except. 1. Distinct Distinct操作 ...

  4. linq操作符:分组操作符

    分组是根据一个特定的值将序列中的元素进行分组.LINQ只包含一个分组操作符:GroupBy.GroupBy操作符类似于T-SQL语言中的Group By语句.来看看GroupBy的方法定义: publ ...

  5. LinQ系列文章

    温故而知新,想着系统再学习一次LinQ知识点,发现园子里有个非常棒的系列文章,所以Mark下来,方便以后查阅! 系列博客导航: LINQ之路系列博客导航 LINQ之路 1:LINQ介绍 LINQ之路 ...

  6. LINQ之路14:LINQ Operators之排序和分组(Ordering and Grouping)

    本篇继续LINQ Operators的介绍,这里要讨论的是LINQ中的排序和分组功能.LINQ的排序操作符有:OrderBy, OrderByDescending, ThenBy, 和ThenByDe ...

  7. C# LINQ系列:LINQ to DataSet的DataTable操作 及 DataTable与Linq相互转换

    LINQ to DataSet需要使用System.Core.dll.System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System. ...

  8. LINQ 系列

    C#图解教程 第十九章 LINQ   LINQ 什么是LINQLINQ提供程序 匿名类型 方法语法和查询语法查询变量查询表达式的结构 from子句join子句什么是联结查询主体中的from…let…w ...

  9. Linq系列

    LINQ 图解 Linq中的Select——投影 Linq学习资源 Expert C# 5.0中的Linq部分

随机推荐

  1. 德国W家HIPP 奶粉有货播报:2014.7.8 HIPP 奶粉 1+ 4盒装有货啦!

    德国W家HIPP 奶粉有货播报:2014.7.8 HIPP 奶粉 1+ 4盒装有货啦!

  2. python实现简单爬虫功能

    在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材. 我们最常规的做法就是通过鼠标右键,选择另存为.但有些图片鼠标右键的 ...

  3. label 多行显示自适应高度

    //项目中显示 地址:XXXXXXX换行  UILabel *numLable = [[UILabel alloc] initWithFrame:CGRectMake(80, 50, 40, 20)] ...

  4. Ambari组件黄色预警

    Ambari组件黄色预警 组件上为黄色问号,代表心跳丢失,解决如下: 1.  查看个节点之间是否可以相互通信,若ssh连接不上,有可能是该节点关机了,没有打开,手动开启该节点,再次验证是否可互通. 2 ...

  5. ESLint 规则

    ESLint由 JavaScript 红宝书 作者 Nicholas C.Zakas 编写, 2013 年发布第一个版本. ESLint是一个以可扩展.每条规则独立的,被设计为完全可配置的lint工具 ...

  6. 字符串转换为数字---使用java7的装箱功能

    以前转换只知道使用Xxx.prasexxx方法,原来,还可以直接装箱自动转换. //String类型字符串 String intStr = "123"; int str2int1 ...

  7. mongodb的修改器

    在mongodb中通常文档只会有一部分要更新,利用原子的更新修改器,可以做到只更新文档的一部分键值,而且更新极为高效,更新修改器是种特殊的键,用来指定复杂的更新操作,比如调整.增加.或者删除键,还可以 ...

  8. js弹出框、对话框、提示框、弹窗总结

    一.JS的三种最常见的对话框 //====================== JS最常用三种弹出对话框 ======================== //弹出对话框并输出一段提示信息 funct ...

  9. php获取excel所有的批注

    phpexcel下载:https://github.com/PHPOffice/PHPExcel <?php /** *获取excel所有的批注 * * 存在编码问题,xls和xlsx的批注编码 ...

  10. JSP页面以及JSP九大隐式对象

    €JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. €JSP这门技术的最大的特点在于,写jsp就像在写html,但它相比 ...