C# Examples

Menu:


C# LINQ Aggregation Methods

Max (LINQ)

Enumerable.Max is extension method from System.Linq namespace. It returns maximal value of numeric collection.

Max for Numeric Types

Gets maximal number from list of integer numbers.

Gets maximal number from list of decimal numbers.

Calling Max on empty collection throws exception.

Max for Nullable Numeric Types

Gets maximal number from list of nullable integers.

Returns null if the collection contains only null values.

Returns null if the collection is empty.

Max with Selector

This example gets length of the longest string.

Max for Types Implementing IComparable

LINQ method Max can be used also on collection of custom type (not numeric type like int or decimal). The custom type have to implement IComparable interface.

Lets have custom type Money which implements IComparable.

And this is usage of Max method on the Money collection.

Max with Query Syntax

LINQ query expression to get maximal item in the collection.

LINQ query expression to get maximal item which matches specified predicate.

LINQ query expression to get maximal string length using selector.

Max with Group By

This example shows how to get maximal value per group. Lets have players. Each player belongs to a team and have a score. Team best score is maximal score of players in a team.

Max Implementation

This is .NET Framework implementation of Enumerable.Max method for collection of numeric type (in this case IEnumerable<int>). Note that it throws the exception for an empty collection on the last line (throw Error.NoElements();)).

This is .NET Framework implementation of Enumerable.Max method for collection of nullable numeric type (in this case IEnumerable<int?>). Note that it returns null for an empty collection (int? value = null;). Also notice that it returns null if all values in the collection are null.


See also

  • C# List - illustrative examples of all List<T> methods
  • C# foreach - how foreach and IEnumerable works debuggable online
By Jan Slama, 06-Apr-2016