Aggregation Methods

Method

Description

SQL equivalents

Count, LongCount

Returns the number of elements in the input sequence, optionally satisfying a predicate

COUNT( )

Min, Max

Returns the smallest or largest element in the sequence

MIN( ), MAX( )

Sum, Average

Calculates a numeric sum or average over elements in the sequence

SUM( ), AVG ()

Aggregate

Performs a custom aggregation

Exception thrown

Count and LongCount

Argument

Type

Source sequence

IEnumerable<TSource>

Predicate (optional)

TSource => bool

Count simply enumerates over a sequence, returning the number of items:

	int fullCount = new int[] { 5, 6, 7}.Count();    // 3

The internal implementation of Enumerable.Count tests the input sequence to see whether it happens to implement ICollection<T>. If it does, it simply calls ICollection<T>.Count. Otherwise, it enumerates over every item, incrementing a counter.

You can optionally supply a predicate:

	int digitCount =
	  "pa55w0rd".Count (c => char.IsDigit (c));   // 3

LongCount does the same job as Count, but returns a 64-bit integer, allowing for sequences of greater than 2 billion elements.

Min and Max

Argument

Type

Source sequence

IEnumerable<TSource>

Result selector (optional)

TSource => TResult

Min and Max return the smallest or largest element from a sequence:

	int[] numbers = { 28, 32, 14 };
	int smallest = numbers.Min();    // 14;
	int largest  = numbers.Max();    // 32;

If you include a selector expression, each element is first projected:

	int smallest = numbers.Max (n => n % 10);   // 8;

A selector ...

Get LINQ Pocket Reference now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.