C# Max and Min: Get Highest or Lowest Element

Use Max and Min from System.Linq. Get the highest or lowest elements.

Max, Min.

In the city skyline we see the highest tower. In C# we call Max (and Min) from System.Linq to get the largest or smallest element. Each element is iterated in the search.

These methods

can also be used with lambda expressions. The result of the lambda is used. Higher-order functions can make programs shorter (but sometimes slower and harder to read).Lambdas


This program instantiates an array of 4 integers on the heap. Next the Max method is called upon this array. Finally we use another version of Max that receives a lambda expression.

Return: The Max method returns 1 when called with no parameters. This is because 1 is the largest value in the program's array.

However: When the Math.Abs transformation is used the value 2 is returned because the absolute value of -2 is 2, and this is larger than 1.

Note: The original value is not returned. Instead the value transformed by the lambda expression is.

C# program that uses Max method using System; using System.Linq; class Program { static void Main() { int[] array1 = { 1, -1, -2, 0 }; // Find maximum number. Console.WriteLine(array1.Max()); // Find maximum number when all numbers are made positive. Console.WriteLine(array1.Max(element => Math.Abs(element))); } } Output 1 2


We want to find the minimum value in a collection (such as an array or List) in a simple way. With Min() we find the minimum element or the minimum value after a transformation.ArrayList

Here: This program instantiates an array of integers upon execution. Then, the Min() method is called on the array.

Finally: The Min() method is called again, but with a lambda expression that makes all values negative.

C# program that uses Min method using System; using System.Linq; class Program { static void Main() { int[] array1 = { 1, -1, 2, 0 }; // Find minimum number. Console.WriteLine(array1.Min()); // Find minimum number when all numbers are made negative. Console.WriteLine(array1.Min(element => -element)); } } Output -1 -2

Notes, above program.

The first call to Min determines that -1 is the smallest integer. The second call changes the 2 to -2, so that is now the smallest integer.

Info: The values in the source array (array1) are not mutated. Min() provides a clear way to find the smallest value in a collection.

Also: You can provide a transformation function, which provides a mechanism for you to insert additional logic if needed.

A summary.

The Max function can find either the maximum value in a collection, or the maximum value after a specific transformation is applied. Min returns the minimum value.


These methods are perhaps most useful with a lambda expression: this makes the computation adjustable. Other forms of delegates (not just lambdas) can be used.
Dot Net Perls
© 2007-2019 Sam Allen. All rights reserved. Written by Sam Allen,