LINQ Dynamic - Max

LINQ Dynamic Max Examples

C# Dynamic LINQ Max examples using an Expression Evaluator.

Max - Simple

This C# example uses the LINQ Max method with a dynamic expression to get the highest number in an array.

LINQ

private void uiMax_Simple_LINQ_Click(object sender, EventArgs e)
{
	int[] numbers = {5, 4, 1, 3, 9, 8, 6, 7, 2, 0};

	var maxNum = numbers.Max();

	var sb = new StringBuilder();

	sb.AppendLine("The maximum number is {0}.", maxNum);

	My.Result.Show(My.LinqResultType.Linq, uiResult, sb);
}

LINQ Execute

private void uiMax_Simple_LINQ_Execute_Click(object sender, EventArgs e)
{
	int[] numbers = {5, 4, 1, 3, 9, 8, 6, 7, 2, 0};

	var maxNum = numbers.Execute<int>("Max()");

	var sb = new StringBuilder();

	sb.AppendLine("The maximum number is {0}.", maxNum);

	My.Result.Show(My.LinqResultType.LinqExecute, uiResult, sb);
}

Result

highlight text %} LINQ Execute Test

The maximum number is 9.


## Max - Projection
This C# example uses the LINQ Max method with a dynamic expression to get the length of the longest word in an array.

### LINQ
```csharp
private void uiMax_Projection_LINQ_Click(object sender, EventArgs e)
{
	string[] words = {"cherry", "apple", "blueberry"};

	var longestLength = words.Max(w => w.Length);

	var sb = new StringBuilder();

	sb.AppendLine("The longest word is {0} characters long.", longestLength);

	My.Result.Show(My.LinqResultType.Linq, uiResult, sb);
}

LINQ Execute

private void uiMax_Projection_LINQ_Execute_Click(object sender, EventArgs e)
{
	string[] words = {"cherry", "apple", "blueberry"};

	var longestLength = words.Execute<int>("Max(w => w.Length)");

	var sb = new StringBuilder();

	sb.AppendLine("The longest word is {0} characters long.", longestLength);

	My.Result.Show(My.LinqResultType.LinqExecute, uiResult, sb);
}

Result

highlight text %} LINQ Execute Test

The longest word is 9 characters long.


## Max - Grouped
This C# example uses the LINQ Max method with a dynamic expression to get the most expensive price among each category's products.

### LINQ
```csharp
private void uiMax_Grouped_LINQ_Click(object sender, EventArgs e)
{
	var products = My.GetProductList();

	var categories = products.GroupBy(p => p.Category).Select(g => new {Category = g.Key, MostExpensivePrice = g.Max(p => p.UnitPrice)});

	var sb = new StringBuilder();

	My.ObjectDumper.Write(sb, categories);

	My.Result.Show(My.LinqResultType.Linq, uiResult, sb);
}

LINQ Execute

private void uiMax_Grouped_LINQ_Execute_Click(object sender, EventArgs e)
{
	var products = My.GetProductList();

	var categories = products.Execute("GroupBy(p => p.Category).Select(g => new { Category = g.Key, MostExpensivePrice = g.Max(p => p.UnitPrice) })");

	var sb = new StringBuilder();

	My.ObjectDumper.Write(sb, categories);

	My.Result.Show(My.LinqResultType.LinqExecute, uiResult, sb);
}

Result

highlight text %} LINQ Execute Test

Category=Beverages Category=Condiments Category=Produce Category=Meat/Poultry Category=Seafood Category=Dairy Products Category=Confections Category=Grains/Cereals MostExpensivePrice=263.5000 MostExpensivePrice=43.9000 MostExpensivePrice=53.0000 MostExpensivePrice=123.7900 MostExpensivePrice=62.5000 MostExpensivePrice=55.0000 MostExpensivePrice=81.0000 MostExpensivePrice=38.0000


## Max - Elements
This C# example uses the LINQ Max method with a dynamic expression to get the products with the most expensive price in each category.

### LINQ
```csharp
private void uiMax_Elements_LINQ_Click(object sender, EventArgs e)
{
	var products = My.GetProductList();

	var categories = products.GroupBy(p => p.Category).Select(g => new { Category = g.Key, MostExpensiveProducts = g.Where(p => p.UnitPrice == g.Max(p2 => p2.UnitPrice)) });

	var sb = new StringBuilder();

	My.ObjectDumper.Write(sb, categories, 1);

	My.Result.Show(My.LinqResultType.Linq, uiResult, sb);
}

LINQ Execute

private void uiMax_Elements_LINQ_Execute_Click(object sender, EventArgs e)
{
	var products = My.GetProductList();

	var categories = products.Execute("GroupBy(p => p.Category).Select(g => new { Category = g.Key, MostExpensiveProducts = g.Where(p => p.UnitPrice == g.Max(p2 => p2.UnitPrice)) })");

	var sb = new StringBuilder();

	My.ObjectDumper.Write(sb, categories, 1);

	My.Result.Show(My.LinqResultType.LinqExecute, uiResult, sb);
}

Result

highlight text %} LINQ Execute Test

Category=Beverages MostExpensiveProducts=... MostExpensiveProducts: ProductID=38 ProductName=Côte de Blaye Category=Beverages UnitPrice=263.5000 UnitsInStock=17 Category=Condiments MostExpensiveProducts=... MostExpensiveProducts: ProductID=63 ProductName=Vegie-spread Category=Condiments UnitPrice=43.9000 UnitsInStock=24 Category=Produce MostExpensiveProducts=... MostExpensiveProducts: ProductID=51 ProductName=Manjimup Dried Apples Category=Produce UnitPrice=53.0000 UnitsInStock=20 Category=Meat/Poultry MostExpensiveProducts=... MostExpensiveProducts: ProductID=29 ProductName=Thüringer Rostbratwurst Category=Meat/Poultry UnitPrice=123.7900 UnitsInStock=0 Category=Seafood MostExpensiveProducts=... MostExpensiveProducts: ProductID=18 ProductName=Carnarvon Tigers Category=Seafood UnitPrice=62.5000 UnitsInStock=42 Category=Dairy Products MostExpensiveProducts=... MostExpensiveProducts: ProductID=59 ProductName=Raclette Courdavault Category=Dairy Products UnitPrice=55.0000 UnitsInStock=79 Category=Confections MostExpensiveProducts=... MostExpensiveProducts: ProductID=20 ProductName=Sir Rodney's Marmalade Category=Confections UnitPrice=81.0000 UnitsInStock=40 Category=Grains/Cereals MostExpensiveProducts=... MostExpensiveProducts: ProductID=56 ProductName=Gnocchi di nonna Alice Category=Grains/Cereals UnitPrice=38.0000 UnitsInStock=21