Aggregation Methods



SQL equivalents

Count, LongCount

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


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 ()


Performs a custom aggregation

Exception thrown

Count and LongCount



Source sequence


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



Source sequence


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.