C# Eval Expression LINQ Dynamic - Min
LINQ Dynamic Min Examples
C# Dynamic LINQ Min examples using an Expression Evaluator.
Min - Simple
This C# example uses the LINQ Min method with a dynamic expression to get the lowest number in an array.
LINQ
private void uiMin_Simple_LINQ_Click(object sender, EventArgs e) { int[] numbers = {5, 4, 1, 3, 9, 8, 6, 7, 2, 0}; var minNum = numbers.Min(); var sb = new StringBuilder(); sb.AppendLine("The minimum number is {0}.", minNum); My.Result.Show(My.LinqResultType.Linq, uiResult, sb); }
LINQ Execute
private void uiMin_Simple_LINQ_Execute_Click(object sender, EventArgs e) { int[] numbers = {5, 4, 1, 3, 9, 8, 6, 7, 2, 0}; var minNum = numbers.Execute<int>("Min()"); var sb = new StringBuilder(); sb.AppendLine("The minimum number is {0}.", minNum); My.Result.Show(My.LinqResultType.LinqExecute, uiResult, sb); }
Result
The minimum number is 0.
Min - Projection
This C# example uses the LINQ Min method with a dynamic expression to get the length of the shortest word in an array.
LINQ
private void uiMin_Projection_LINQ_Click(object sender, EventArgs e) { string[] words = {"cherry", "apple", "blueberry"}; var shortestWord = words.Min(w => w.Length); var sb = new StringBuilder(); sb.AppendLine("The shortest word is {0} characters long.", shortestWord); My.Result.Show(My.LinqResultType.Linq, uiResult, sb); }
LINQ Execute
private void uiMin_Projection_LINQ_Execute_Click(object sender, EventArgs e) { string[] words = {"cherry", "apple", "blueberry"}; var shortestWord = words.Execute<int>("Min(w => w.Length)"); var sb = new StringBuilder(); sb.AppendLine("The shortest word is {0} characters long.", shortestWord); My.Result.Show(My.LinqResultType.LinqExecute, uiResult, sb); }
Result
The shortest word is 5 characters long.
Min - Grouped
This C# example uses the LINQ Min method with a dynamic expression to get the cheapest price among each category's products.
LINQ
private void uiMin_Grouped_LINQ_Click(object sender, EventArgs e) { var products = My.GetProductList(); var categories = products.GroupBy(p => p.Category).Select(g => new {Category = g.Key, CheapestPrice = g.Min(p => p.UnitPrice)}); var sb = new StringBuilder(); My.ObjectDumper.Write(sb, categories); My.Result.Show(My.LinqResultType.Linq, uiResult, sb); }
LINQ Execute
private void uiMin_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, CheapestPrice = g.Min(p => p.UnitPrice) })"); var sb = new StringBuilder(); My.ObjectDumper.Write(sb, categories); My.Result.Show(My.LinqResultType.LinqExecute, uiResult, sb); }
Result
Category=Beverages
Category=Condiments
Category=Produce
Category=Meat/Poultry
Category=Seafood
Category=Dairy Products
Category=Confections
Category=Grains/Cereals CheapestPrice=4.5000
CheapestPrice=10.0000
CheapestPrice=10.0000
CheapestPrice=7.4500
CheapestPrice=6.0000
CheapestPrice=2.5000
CheapestPrice=9.2000
CheapestPrice=7.0000
Min - Elements
This C# example uses the LINQ Min method with a dynamic expression to get the products with the cheapest price in each category.
LINQ
private void uiMin_Elements_LINQ_Click(object sender, EventArgs e) { var products = My.GetProductList(); var categories = products.GroupBy(p => p.Category).Select(g => new {Category = g.Key, CheapestProducts = g.Where(p => p.UnitPrice == g.Min(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 uiMin_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, CheapestProducts = g.Where(p => p.UnitPrice == g.Min(p2 => p2.UnitPrice)) })"); var sb = new StringBuilder(); My.ObjectDumper.Write(sb, categories, 1); My.Result.Show(My.LinqResultType.LinqExecute, uiResult, sb); }
Result
Category=Beverages CheapestProducts=...
CheapestProducts: ProductID=24 ProductName=Guaraná Fantástica Category=Beverages UnitPrice=4.5000 UnitsInStock=20
Category=Condiments CheapestProducts=...
CheapestProducts: ProductID=3 ProductName=Aniseed Syrup Category=Condiments UnitPrice=10.0000 UnitsInStock=13
Category=Produce CheapestProducts=...
CheapestProducts: ProductID=74 ProductName=Longlife Tofu Category=Produce UnitPrice=10.0000 UnitsInStock=4
Category=Meat/Poultry CheapestProducts=...
CheapestProducts: ProductID=54 ProductName=Tourtière Category=Meat/Poultry UnitPrice=7.4500 UnitsInStock=21
Category=Seafood CheapestProducts=...
CheapestProducts: ProductID=13 ProductName=Konbu Category=Seafood UnitPrice=6.0000 UnitsInStock=24
Category=Dairy Products CheapestProducts=...
CheapestProducts: ProductID=33 ProductName=Geitost Category=Dairy Products UnitPrice=2.5000 UnitsInStock=112
Category=Confections CheapestProducts=...
CheapestProducts: ProductID=19 ProductName=Teatime Chocolate Biscuits Category=Confections UnitPrice=9.2000 UnitsInStock=25
Category=Grains/Cereals CheapestProducts=...
CheapestProducts: ProductID=52 ProductName=Filo Mix Category=Grains/Cereals UnitPrice=7.0000 UnitsInStock=38