聚合函数在一系列的值上执行特定的运算,并返回单个值,如在给定元素的值上执行求和或计数运算。
  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. 【BZOJ1662】[Usaco2006 Nov]Round Numbers 圆环数 数位DP

    [BZOJ1662][Usaco2006 Nov]Round Numbers 圆环数 Description 正如你所知,奶牛们没有手指以至于不能玩"石头剪刀布"来任意地决定例如谁 ...

  2. CF750E New Year and Old Subsequence

    讲道理好久没有做过题了.. 题目大意 给出长度为$n$的只含数字的串,有$q$个询问,每次询问一段区间,问最少删去多少个数才能变成只含2017子序列而不含2016子序列 吉爸爸好强啊.. 定义$a_{ ...

  3. select2插件不兼容ie7,ie7下样子显示错位问题

    1.源文件(未修改) select2.min.css.select2.min.js 2.ie7下显示样式: 3.ie8下显示样式: 4.经查看发现ie7下对一些属性的解析和ie8不同,需对ie7另作h ...

  4. win10家庭版在线升级到win10专业版

    首先在win10自带的搜索框中输入"控制面板",在搜索结果的界面中单击"控制面板",进入控制面板界面. 在控制面板中点击"系统和安全",进入 ...

  5. bzoj2342还是马拉车

    就好比第一次写主席树的时候写了30行,第二次写了5行 这次马拉车只剩下 ,id=,mx=;i<=n;i++) { -i],mx-i):;a[i-p[i]]==a[i+p[i]+];p[i]++) ...

  6. db2循环

    db2普通循环结构 while循环 while 条件 do 循环体 end while; LOOP循环 SET V_INDEX = 0; AUTHLOOP: LOOP V_INDEXV_INDEX = ...

  7. Java的四种引用方式

    一.引用基本概念 从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期.这四种级别由高到低依次为:强引用.软引用.弱引用.虚引用. 1.强引用(StrongRef ...

  8. homework-02

    关于输入 先来说说关于输入的事情.其实我最一开始并没有发现输入数字之间是用逗号隔开的,所以我是当做空格隔开来写的,后来发现以后匆忙改正,利用strtok与atoi函数从字符串中提取出用逗号隔开的数字. ...

  9. Python模块之day4

    模块,代码归类实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能 ...

  10. java反射技术详解

    反射: 其实就是动态的从内存加载一个指定的类,并获取该类中的所有的内容. 反射的好处:大大的增强了程序的扩展性. 反射的基本步骤: 1. 获得Class对象,就是获取到指定的名称的字节码文件对象. 2 ...