Mega Code Archive

 
Categories / VB.Net / LINQ
 

Min and let clause

Imports System.IO Imports System.Reflection Imports System.Linq Imports System.Xml.Linq Imports System.Collections Imports System.Collections.Generic Public Class Project     Public ProjectID As Integer     Public ProjectName As String     Public Category As String     Public Cost As Decimal     Public YearLength As Integer End Class Public Class Employee     Public EmployeeID As String     Public CompanyName As String     Public Address As String     Public City As String     Public Region As String     Public PostalCode As String     Public Country As String     Public Phone As String     Public Fax As String     Public Payments As Payment() End Class Public Class Payment     Public PaymentID As Integer     Public PaymentDate As DateTime     Public Total As Decimal End Class Public Class MainClass     Public Shared Sub Main()         Dim projectList As List(Of Project) = New List(Of Project)         projectList.Add(New Project With {.ProjectID = 1, .ProjectName = "A", .Category = "Design", .Cost = 18D, .YearLength = 39})         projectList.Add(New Project With {.ProjectID = 2, .ProjectName = "B", .Category = "Testing", .Cost = 19D, .YearLength = 17})         projectList.Add(New Project With {.ProjectID = 3, .ProjectName = "C", .Category = "Coding", .Cost = 10D, .YearLength = 13})         projectList.Add(New Project With {.ProjectID = 4, .ProjectName = "D", .Category = "Meeting", .Cost = 22D, .YearLength = 53})         projectList.Add(New Project With {.ProjectID = 5, .ProjectName = "E", .Category = "Writing", .Cost = 21.35D, .YearLength = 0})         projectList.Add(New Project With {.ProjectID = 6, .ProjectName = "F", .Category = "Testing", .Cost = 25D, .YearLength = 120})         projectList.Add(New Project With {.ProjectID = 7, .ProjectName = "G", .Category = "Coding", .Cost = 30D, .YearLength = 15})         projectList.Add(New Project With {.ProjectID = 8, .ProjectName = "H", .Category = "Design", .Cost = 40D, .YearLength = 6})         projectList.Add(New Project With {.ProjectID = 9, .ProjectName = "I", .Category = "Coding", .Cost = 97D, .YearLength = 29})         Dim employeeList As List(Of Employee) = New List(Of Employee)         employeeList.Add(New Employee With {.EmployeeID = 1, .CompanyName = "Company A", .Address = "Street 1", .City = "City 1", .Region = "North"})         employeeList.Add(New Employee With {.EmployeeID = 2, .CompanyName = "Company B", .Address = "Street 2", .City = "City 2", .Region = "South"})         employeeList.Add(New Employee With {.EmployeeID = 3, .CompanyName = "Company C", .Address = "Street 3", .City = "City 3", .Region = "West"})         employeeList.Add(New Employee With {.EmployeeID = 4, .CompanyName = "Company D", .Address = "Street 4", .City = "City 4", .Region = "East"})         employeeList.Add(New Employee With {.EmployeeID = 5, .CompanyName = "Company E", .Address = "Street 5", .City = "City 5", .Region = "North"})         employeeList.Add(New Employee With {.EmployeeID = 6, .CompanyName = "Company F", .Address = "Street 6", .City = "City 6", .Region = "South"})         Dim categories = From prod In projectList _                          Group prod By prod.Category _                          Into Prods = Group, minPrice = Min(prod.Cost) _                          Let CheapestProjects = (From p In Prods _                                                  Where p.Cost = minPrice) _                          Select Category, CheapestProjects     End Sub End Class