LINQ系列:Linq to Object聚合操作符
聚合函数在一系列的值上执行特定的运算,并返回单个值,如在给定元素的值上执行求和或计数运算。
LINQ共有7种聚合操作符:Aggregate、Average、Count、LongCount、Max、Min和Sum。
1. Aggregate
Aggregate操作符从某一特定序列或集合中收集值。当聚合完成时,它将序列中返回的值进行累积并返回结果。
1>. 原型定义
public static TSource Aggregate<TSource>(this IEnumerable<TSource> source, Func<TSource, TSource, TSource> func);
2>. 示例
var expr = context.Categories
.Select(c => c.CategoryName)
.ToArray()
.Aggregate((current, next) => String.Format("{0}-{1}", current, next)); Console.WriteLine(expr);
2. Average
Average操作符计算一个数值序列的平均值。
1>.原型定义
public static double Average(this IEnumerable<double> source);
public static double Average<TSource>(this IEnumerable<TSource> source, Func<TSource, int> selector);
2>.示例
int[] fibonacci = new int[] { , , , , , , , };
Console.WriteLine(fibonacci.Average());
var expr = context.Products
.Average(p => p.UnitPrice); Console.WriteLine(expr);
var expr = context.Products
.Select(p=>p.UnitPrice)
.Average();
var expr = from p in context.Products
select p; expr.Average(p => p.UnitPrice)
var expr = from p in context.Products
select p.UnitPrice;
expr.Average();
3. Count
Count操作符计算一个特定集合中元素的个数。
1>. 原型定义
public static int Count<TSource>(this IQueryable<TSource> source);
public static int Count<TSource>(this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate);
2>. 示例
int[] fibonacci = new int[] { , , , , , , , };
Console.WriteLine(fibonacci.Count());
var expr = context.Products.Count();
var expr = context.Products
.Where(p => p.UnitPrice > 10m)
.Count();
var expr = context.Products
.Count(p => p.UnitPrice > 10m);
int[] fibonacci = new int[] { , , , , , , , };
var expr = from f in fibonacci
where f >
select f;
expr.Count();
var expr = from c in context.Categories
select new
{
c.CategoryName,
ProductsCount = c.Products.Count()
};
4. LongCount
LongCount操作符会返回一个Int64类型的值,用来计算元素数大于Int32.MaxValue的集合的元素数。LongCount的使用方法与Count相同。
1>. 原型定义
public static long LongCount<TSource>(this IQueryable<TSource> source);
public static long LongCount<TSource>(this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate);
2>. 示例
var expr = context.Products
.LongCount(p => p.UnitPrice > 10m);
5. Max
Max操作符返回一个序列中的最大值。
1>. 原型定义
public static TSource Max<TSource>(this IQueryable<TSource> source);
public static TResult Max<TSource, TResult>(this IQueryable<TSource> source, Expression<Func<TSource, TResult>> selector);
2>. 示例
int[] numbers = { , , , , , , , , , };
int maxNumber = numbers.Max();
var expr = from p in context.Products
select p;
expr.Max(p => p.UnitPrice > 10m);
var expr = from p in context.Products
select p.UnitPrice;
expr.Max();
var expr = context.Products
.Max(p => p.UnitPrice > 10m);
var expr = context.Products
.Select(p => p.UnitPrice)
.Max();
IEnumerable<Product> query = from p in context.Products
where p.UnitPrice == context.Products.Max(product => product.UnitPrice)
select p;
IEnumerable<Product> query = from p in context.Products
where p.UnitPrice == context.Products.OrderByDescending(product => product.UnitPrice).First().UnitPrice
select p;
6. Min
Min操作符返回一个序列中的最小值。
1>. 原型定义
public static TSource Min<TSource>(this IQueryable<TSource> source);
public static TResult Min<TSource, TResult>(this IQueryable<TSource> source, Expression<Func<TSource, TResult>> selector);
2>. 示例
string[] words = { "cherry", "apple", "blueberry" };
int shortestWord = words.Min(w => w.Length);
int[] numbers = { , , , , , , , , , };
int minNumber = numbers.Min();
var expr = context.Products
.Select(p => p.UnitPrice)
.Min();
7. Sum
Sum操作符计算集合中选定值的总和。
1>. 原型定义
public static int Sum(this IQueryable<int> source);
public static int Sum<TSource>(this IQueryable<TSource> source, Expression<Func<TSource, int>> selector);
2>. 示例
int[] fibonacci = new int[] { , , , , , , , };
var expr = from f in fibonacci
select f;
expr.Sum();
int[] fibonacci = new int[] { , , , , , , , };
var expr = from f in fibonacci
where f >
select f;
expr.Sum();
var expr = from p in context.Products
select p;
expr.Sum(p => p.UnitPrice);
var expr = from p in context.Products
select p.UnitPrice;
expr.Sum();
LINQ系列:Linq to Object聚合操作符的更多相关文章
- LINQ系列目录
1. LINQ准备 1.1 C#中与LINQ相关特性 2. LINQ to Object 2.1 LINQ to Object投影操作符(Select/SelectMany/Let) 2.2 LINQ ...
- C# ~ 从 XML 到 Linq 到 Linq to XML
.XML 可扩展标记语言 (Extensible Markup Language), 标记 (markup) 是关键部分,是标准通用标记语言 (Standard Generalized Markup ...
- LINQ系列:Linq to Object集合操作符
集合操作符对元素的集合或序列集合进行操作,并返回一个集合.LINQ共有4种集合查询操作符:Distinct.Union.Intersect和Except. 1. Distinct Distinct操作 ...
- LinQ系列文章
温故而知新,想着系统再学习一次LinQ知识点,发现园子里有个非常棒的系列文章,所以Mark下来,方便以后查阅! 系列博客导航: LINQ之路系列博客导航 LINQ之路 1:LINQ介绍 LINQ之路 ...
- C# LINQ系列:LINQ to DataSet的DataTable操作 及 DataTable与Linq相互转换
LINQ to DataSet需要使用System.Core.dll.System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System. ...
- LINQ 系列
C#图解教程 第十九章 LINQ LINQ 什么是LINQLINQ提供程序 匿名类型 方法语法和查询语法查询变量查询表达式的结构 from子句join子句什么是联结查询主体中的from…let…w ...
- Linq系列
LINQ 图解 Linq中的Select——投影 Linq学习资源 Expert C# 5.0中的Linq部分
- LINQ之LINQ to Objects(上)
LINQ概述 LINQ,语言集成查询(Language Integrated Query),它允许使用C#或VB代码以查询数据库相同的方式来操作不同的数据源. 1.LINQ体系结构 从上图可以看出,L ...
- Linq之Linq to Sql
目录 写在前面 系列文章 Linq to sql 总结 写在前面 上篇文章介绍了linq to xml的相关内容,linq to xml提供一种更便捷的创建xml树,及查询的途径.这篇文章将继续介绍l ...
随机推荐
- HDU5456 Matches Puzzle Game(DP)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5456 Description As an exciting puzzle game for ...
- rake deploy ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to解决方法
需要修改项目中Rakefile文件的内容: 原始内容:system "git push origin #{deploy_branch}" 改后内容:system "git ...
- OpenGL入门
OpenGL是个啥... 网上资料挺多的,今天在codeblocks配置了一下..抄了一会书上的代码,还挺有意思的. 首先,从官网把glut的包给下载下来,点这里. 以下内容从网上抄的: 将glut. ...
- ZeroMQ(ZMQ)函数接口英汉直译
找了好多地方都找不到ZMQ接口函数的中文文档,就厚着脸皮自己翻译了下.但因为作者本人涉世未深,翻译有错误的地方还请大家不吝赐教,在下感激不尽. 因为时间有限,只能一点一点翻译了. ZMQ接口文档的官方 ...
- CentOS安装配置redis
安装前准备,安装gcc 先用 gcc -v命令检测本机是否安装gcc,如果没有则用下面命令安装: yum install cpp yum install binutils yum install gl ...
- Code of Conduct
v
- Akka-actor使用入门
学习scala编程,不可避免的会接触到actor模式,它使得并发编程不再像噩梦般萦绕着开发者,Akka是actor的一个开源实现.由于本人水平有限,自认为还不能把actor设计思想讲明白,所以本文仅仅 ...
- Hibernate4 实例
一.hibernate需要的配置文件 首先hibernate中有两种xml文件. .cfg,xml文件负责配置连接数据库的信息.指定映射类.指定hbm映射文件. .hbm.xml文件负责配置持久化类和 ...
- nginx-nginx脚本
#!/bin/bash #nx Startup script for the Nginx HTTP Server # it is v. version. # chkconfig: - # descri ...
- (翻译)开始iOS 7中自动布局教程(二)
这篇教程的前半部分被翻译出来很久了,我也是通过这个教程学会的IOS自动布局.但是后半部分(即本篇)一直未有翻译,正好最近跳坑翻译,就寻来这篇教程,进行翻译.前半部分已经转载至本博客,后半部分即本篇.学 ...