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 ...
随机推荐
- JS+CSS 钟表
.<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title& ...
- linux shell basic command
Learning basic Linux commands Command Description $ ls This command is used to check the contents of ...
- 基础3.Jquery操作Dom
1 内部插入节点 <body> <ul id="city"> <li id="bj" name=&qu ...
- spring3.0使用annotation完全代替XML(三)
很久之前写过两篇博客: spring3.0使用annotation完全代替XML spring3.0使用annotation完全代替XML(续) 用java config来代替XML,当时还遗留下一些 ...
- WIN32 窗口封装类实现
CQWnd.h窗口类定义 // QWnd.h: interface for the CQWnd class. // ////////////////////////////////////////// ...
- 初学者-PHP笔记
PHP介绍 PHP 是 "PHP Hypertext Preprocessor" 的首字母缩略词 PHP 是一种被广泛使用的开源脚本语言 PHP 脚本在服务器上执行 PHP 没有成 ...
- LeetCode题目按公司分类
LinkedIn(39) 1 Two Sum 23.0% Easy 21 Merge Two Sorted Lists 35.4% Easy 23 Merge k Sorted Lists 23.3% ...
- ArcGIS AddIN开发:如何调用ArcMap中的选择工作空间的窗体
示例代码如下: public static IWorkspaceName BrowseWorkspace(int hwnd,out IWorkspace ws) { IGxObjectFilterCo ...
- Logstash之multiline 插件
input { stdin { codec => multiline { pattern => "^\[" negate => true what => & ...
- js 的一些知识 摘自http://img0.pconline.com.cn/Pc_intranet/1105/13/313647_7.pdf
Js 问题分析--js 影响页面性能现状分析:问题陈述分析问题:抽象问题根源,通过实例或推理证明问题的严重性问题引申:以现有问题为点开始扩散,这将导致其它什么问题,或同一类型的问题问题总结:从分散开始 ...