惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Apple Machine Learning Research
Apple Machine Learning Research
Last Week in AI
Last Week in AI
Blog — PlanetScale
Blog — PlanetScale
V
Visual Studio Blog
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
博客园 - Franky
IT之家
IT之家
博客园 - 叶小钗
Engineering at Meta
Engineering at Meta
The GitHub Blog
The GitHub Blog
雷峰网
雷峰网
腾讯CDC
博客园 - 聂微东
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
人人都是产品经理
人人都是产品经理
MongoDB | Blog
MongoDB | Blog
大猫的无限游戏
大猫的无限游戏
Martin Fowler
Martin Fowler
宝玉的分享
宝玉的分享
博客园_首页
G
Google Developers Blog

博客园 - 郭大少

LINQ to SQL语句之 Top/Bottom/Paging/SqlMethods LINQ to SQL语句小结之 Exists/In/Any/All/Contains(转载) 求助关于系统日志的解决方案 【转】 Resharper上手指南 NetTiers模板属性说明 2.3.0——转帖 lucene Field部分参数设置含义 Win2003 防木马、权限设置、IIS服务器安全配置整理-转载 使用ASP.NET Global.asax 文件 主流的ajax框架(整理了部分下载地址) 网络时代最具技术含量的N种方法 法国也要换图腾 微软新闻两则 收集的正则表达式 - 郭大少 - 博客园 在 Internet Explorer 5.5 中创建可编辑的 Web 页 数据挖掘技术简介(入门资料再弱弱的提几个问题) 打印网页中特定内容的实现方法-----网络收集 - 郭大少 - 博客园 微软专家:Linux不会对Windows构成威胁---怀疑中~ 售楼小姐真情自白:揭穿卖房二十骗局 (我转载的--他NND房地产商真黑!) 将aspx网页以HTML形式存储的几个方法
LINQ to SQL语句之 Count/Sum/Min/Max/Avg
郭大少 · 2012-04-24 · via 博客园 - 郭大少

Count/Sum/Min/Max/Avg操作符

适用场景:统计数据吧,比如统计一些数据的个数,求和,最小值,最大值,平均数。

Count

说明:返回集合中的元素个数,返回INT类型;不延迟。生成SQL语句为:SELECT COUNT(*) FROM

1.简单形式:

得到数据库中客户的数量:

var q = db.Customers.Count();

2.带条件形式:

得到数据库中未断货产品的数量:

var q = db.Products.Count(p => !p.Discontinued);

LongCount

说明:返回集合中的元素个数,返回LONG类型;不延迟。对于元素个数较多的集合可视情况可以选用LongCount来统计元素个数,它返回long类型,比较精确。生成SQL语句为:SELECT COUNT_BIG(*) FROM

var q = db.Customers.LongCount();

Sum

说明:返回集合中数值类型元素之和,集合应为INT类型集合;不延迟。生成SQL语句为:SELECT SUM(…) FROM

1.简单形式:

得到所有订单的总运费:

var q = db.Orders.Select(o => o.Freight).Sum();

2.映射形式:

得到所有产品的订货总数:

var q = db.Products.Sum(p => p.UnitsOnOrder);

Min


说明:返回集合中元素的最小值;不延迟。生成SQL语句为:SELECT MIN(…) FROM

1.简单形式:


查找任意产品的最低单价:
var q = db.Products.Select(p => p.UnitPrice).Min();

2.映射形式:


查找任意订单的最低运费:
var q = db.Orders.Min(o => o.Freight);

3.元素:


查找每个类别中单价最低的产品:
var categories = from p in db.Products group p by p.CategoryID into g select new { CategoryID = g.Key, CheapestProducts = from p2 in g where p2.UnitPrice == g.Min(p3 => p3.UnitPrice) select p2 };

Max


说明:返回集合中元素的最大值;不延迟。生成SQL语句为:SELECT MAX(…) FROM

1.简单形式:


查找任意雇员的最近雇用日期:
var q = db.Employees.Select(e => e.HireDate).Max();

2.映射形式:


查找任意产品的最大库存量:
var q = db.Products.Max(p => p.UnitsInStock);

3.元素:


查找每个类别中单价最高的产品:
var categories = from p in db.Products group p by p.CategoryID into g select new { g.Key, MostExpensiveProducts = from p2 in g where p2.UnitPrice == g.Max(p3 => p3.UnitPrice) select p2 };

Average


说明:返回集合中的数值类型元素的平均值。集合应为数字类型集合,其返回值类型为double;不延迟。生成SQL语句为:SELECT AVG(…) FROM

1.简单形式:


得到所有订单的平均运费:
var q = db.Orders.Select(o => o.Freight).Average();

2.映射形式:


得到所有产品的平均单价:
var q = db.Products.Average(p => p.UnitPrice);

3.元素:


查找每个类别中单价高于该类别平均单价的产品:
var categories = from p in db.Products group p by p.CategoryID into g select new { g.Key, ExpensiveProducts = from p2 in g where p2.UnitPrice > g.Average(p3 => p3.UnitPrice) select p2 };

Aggregate


说明:根据输入的表达式获取聚合值;不延迟。即是说:用一个种子值与当前元素通过指定的函数来进行对比来遍历集合中的元素,符合条件的元素保留下来。如果没有指定种子值的话,种子值默认为集合的第一个元素。