聚合函数在一系列的值上执行特定的运算,并返回单个值,如在给定元素的值上执行求和或计数运算。
  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聚合操作符的更多相关文章

  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知识点,发现园子里有个非常棒的系列文章,所以Mark下来,方便以后查阅! 系列博客导航: LINQ之路系列博客导航 LINQ之路 1:LINQ介绍 LINQ之路 ...

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

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

  6. LINQ 系列

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

  7. Linq系列

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

  8. LINQ之LINQ to Objects(上)

    LINQ概述 LINQ,语言集成查询(Language Integrated Query),它允许使用C#或VB代码以查询数据库相同的方式来操作不同的数据源. 1.LINQ体系结构 从上图可以看出,L ...

  9. Linq之Linq to Sql

    目录 写在前面 系列文章 Linq to sql 总结 写在前面 上篇文章介绍了linq to xml的相关内容,linq to xml提供一种更便捷的创建xml树,及查询的途径.这篇文章将继续介绍l ...

随机推荐

  1. 浅谈我对 jQuery 的了解

    总述 0 获取 jQuery 对象 1 对象跳转 2 方法调用 3 常用API 4 $(…); 5 jQuery 对象获取 6 Data 相关方法 7 选择器 8 基本的过滤器 9 内容过滤选择器 1 ...

  2. React-native之持久化保存----AsyncStorage

    AsyncStorage AsyncStorage是一个简单的,未加密的,异步的,持久化,关键值存储系统,是全局的. iOS中存储类似于NSUserDefault,存储问plist文件存放在设备中. ...

  3. expect脚本语言用法示例

    #!/usr/bin/expect set hostname [lindex $argv 0] set username [lindex $argv 1] set passwd [lindex $ar ...

  4. 【验证】C# dataSource 的记忆功能

    做项目时遇到的问题:dataSource被ComboBox引用过一次,会记忆最后一次选中的值,然后下一次再用时这个值会直接呈现在ComboBox中. 为验证是dataSource还是ComboBox自 ...

  5. 深入理解JavaScript中 fn() 和 return fn() 的区别

    在js中,经常会遇到在函数里调用其它函数的情况,这时候会有 fn() 这种调用方式,还有一种是 return fn() 这种调用方式,一些初学者经常会一脸萌逼地被这两种方式给绕晕了.这里用一个优雅的面 ...

  6. Linux下uniq命令的详解

           -c 在输出行前面加上每行在输入文件中出现的次数.  -d 仅显示重复行.       -u 仅显示不重复的行. 示例 1.去重,有多行一样的只显示一行cat 4.txt |sort - ...

  7. ajax的一些笔试面试题

    1. 什么是ajax,为什么要使用Ajax(请谈一下你对Ajax的认识) 什么是ajax: AJAX是“Asynchronous JavaScript and XML”的缩写.他是指一种创建交互式网页 ...

  8. python学习笔记--基础概要

    1.python的int类型没有大小限制(或者说只受机器内存限制),str类型用单引号或者双引号都行,只要对称就可以了.(注意固定性) 2.使用[]表示存取字符串等序列的某一项(索引从0开始) 3.类 ...

  9. SQL Server 2012安装图文教程

    解析SQL Server 2012安装中心 当系统打开"SQL Server安装中心",则说明我们可以开始正常的安装SQL Server 2012了. SQL Server安装中心 ...

  10. Centos 6.5 部署 redmine 3.3

    验证ruby版本 如果有就卸载安装最新的 yum install gcc* openssl openssl-devel -y wget https://ruby.taobao.org/mirrors/ ...