Finding the maximum value in a sequence with LINQ C#
August 6, 2014 1 Comment
Finding the maximum value in a sequence can be performed using the Max LINQ operator. In it simplest, parameterless form it works on numeric sequences like this:
List<int> integers = new List<int>() { 54, 23, 76, 123, 93, 7, 3489 }; int intMax = integers.Max();
…which gives 3489.
Applying the operator on a list of strings gives the alphabetically maximum value in the list:
string[] bands = { "ACDC", "Queen", "Aerosmith", "Iron Maiden", "Megadeth", "Metallica", "Cream", "Oasis", "Abba", "Blur", "Chic", "Eurythmics", "Genesis", "INXS", "Midnight Oil", "Kent", "Madness", "Manic Street Preachers" , "Noir Desir", "The Offspring", "Pink Floyd", "Rammstein", "Red Hot Chili Peppers", "Tears for Fears" , "Deep Purple", "KISS"}; string stringMax = bands.Max();
…which yields “The Offspring”.
The operator can be applied to sequences of custom objects:
public class Singer { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public int BirthYear { get; set; } } IEnumerable<Singer> singers = new List<Singer>() { new Singer(){Id = 1, FirstName = "Freddie", LastName = "Mercury", BirthYear=1964} , new Singer(){Id = 2, FirstName = "Elvis", LastName = "Presley", BirthYear = 1954} , new Singer(){Id = 3, FirstName = "Chuck", LastName = "Berry", BirthYear = 1954} , new Singer(){Id = 4, FirstName = "Ray", LastName = "Charles", BirthYear = 1950} , new Singer(){Id = 5, FirstName = "David", LastName = "Bowie", BirthYear = 1964} }; int maxSingerBirthYear = singers.Max(s => s.BirthYear);
We applied a selector function to find the highest birth year, i.e. 1964. We can find the maximum first name alphabetically speaking:
String maxSingerName = singers.Max(s => s.FirstName);
…which gives “Ray”.
View the list of posts on LINQ here.
Reblogged this on Dinesh Ram Kali..