VB.Net/LINQ/Anonymous Object
Содержание
- 1 An anonymous type is returned containing the Id, Name and Pay
- 2 Calls ToString() on each anonymous object
- 3 Create anonymous type from query
- 4 Create anonymous type in query and convert to array
- 5 Get structured data which only accounts for the Make and Color of each item
- 6 Linq way of doing Object creation
An anonymous type is returned containing the Id, Name and Pay
<source lang="vbnet"> Imports System Imports System.Xml.Linq
Public Class MainClass Public Shared Sub Main() Dim employees As XElement = XElement.Load("Employees.xml")
Dim query = From ele In employees.<Employee> _ Where CDbl(ele.<HourlyRate>.Value) >= 100 _ Select ele.@id, ele.<Name>.Value, Pay = CDbl(ele.<HourlyRate>.Value) _ Order By Name For Each emp In query Console.WriteLine("[{0,-2}] {1,-25} ${2,-6}", emp.id, emp.Name, emp.Pay.ToString("##.00")) Next End Sub End Class </source>
Calls ToString() on each anonymous object
<source lang="vbnet">
Public Class Car
Public PetName As String = String.Empty Public Color As String = String.Empty Public Speed As Integer Public Make As String = String.Empty Public Overloads Overrides Function ToString() As String Return String.Format("Make={0}, Color={1}, Speed={2}, PetName={3}", _ Make, Color, Speed, PetName) End Function
End Class Module Program
Sub Main() Dim myCars As New List(Of Car)(New Car() { _ New Car With {.PetName = "D", .Color = "Silver", .Speed = 100, .Make = "BMW"}, _ New Car With {.PetName = "C", .Color = "Tan", .Speed = 90, .Make = "BMW"}, _ New Car With {.PetName = "B", .Color = "Rust", .Speed = 5, .Make = "Yugo"}, _ New Car With {.PetName = "A", .Color = "White", .Speed = 43, .Make = "Ford"}}) Dim makesColors = From c In myCars Select New With {c.Make, c.Color} Dim objs As Array = makesColors.ToArray() For Each o As Object In objs Console.WriteLine(o) " . Next
End Sub
End Module
</source>
Create anonymous type from query
<source lang="vbnet"> Imports System.Collections.Generic Imports System.Linq Imports System.Runtime.rupilerServices
Public Class Role
Public ID As Integer Public RoleDescription As String
End Class Public Class Person
Public ID As Integer Public IDRole As Integer Public LastName As String Public FirstName As String
End Class
Module Module1
Sub Main() Dim people As New List(Of Person)(New Person() { _ New Person With {.ID = 1, .IDRole = 1, .LastName = "A", .FirstName = "Brad"}, _ New Person With {.ID = 2, .IDRole = 2, .LastName = "G", .FirstName = "Tom"} _ }) Dim roles As New List(Of Role)(New Role() { _ New Role With {.ID = 1, .RoleDescription = "Manager"}, _ New Role With {.ID = 2, .RoleDescription = "Developer"} _ }) Dim query = From p In people Where p.ID = 1 Select New With {p.FirstName, p.LastName} End Sub
End Module
</source>
Create anonymous type in query and convert to array
<source lang="vbnet"> Imports System.Collections.Generic Imports System.Linq Imports System.Runtime.rupilerServices
Public Class Role
Public ID As Integer Public RoleDescription As String
End Class Public Class Person
Public ID As Integer Public IDRole As Integer Public LastName As String Public FirstName As String
End Class Module Module1
Sub Main() Dim people As New List(Of Person)(New Person() { _ New Person With {.ID = 1, .IDRole = 1, .LastName = "A", .FirstName = "Brad"}, _ New Person With {.ID = 2, .IDRole = 2, .LastName = "G", .FirstName = "Tom"} _ }) Dim roles As New List(Of Role)(New Role() { _ New Role With {.ID = 1, .RoleDescription = "Manager"}, _ New Role With {.ID = 2, .RoleDescription = "Developer"} _ }) Dim query = (From p In people Where p.ID = 1 Select New With {p.FirstName, p.LastName}).ToArray() people(0).FirstName = "Fabio" End Sub
End Module
</source>
Get structured data which only accounts for the Make and Color of each item
<source lang="vbnet"> Public Class Car
Public PetName As String = String.Empty Public Color As String = String.Empty Public Speed As Integer Public Make As String = String.Empty Public Overloads Overrides Function ToString() As String Return String.Format("Make={0}, Color={1}, Speed={2}, PetName={3}", Make, Color, Speed, PetName) End Function
End Class Module Program
Sub Main() Dim myCars As New List(Of Car)(New Car() { _ New Car With {.PetName = "D", .Color = "Silver", .Speed = 100, .Make = "BMW"}, _ New Car With {.PetName = "C", .Color = "Tan", .Speed = 90, .Make = "BMW"}, _ New Car With {.PetName = "B", .Color = "Rust", .Speed = 5, .Make = "Yugo"}, _ New Car With {.PetName = "A", .Color = "White", .Speed = 43, .Make = "Ford"}}) Dim makesColors = From c In myCars Select New With {c.Make, c.Color} For Each n In makesColors Console.WriteLine("Name: {0}", n) Next End Sub
End Module
</source>
Linq way of doing Object creation
<source lang="vbnet"> Imports System.Collections.Generic Imports System.Linq Imports System.Runtime.rupilerServices
Public Class Role
Public ID As Integer Public RoleDescription As String
End Class Public Class Person
Public ID As Integer Public IDRole As Integer Public LastName As String Public FirstName As String
End Class
Module Module1
Sub Main() Dim people As New List(Of Person)(New Person() { _ New Person With {.ID = 1, .IDRole = 1, .LastName = "A", .FirstName = "Brad"}, _ New Person With {.ID = 2, .IDRole = 2, .LastName = "G", .FirstName = "Tom"} _ }) Dim roles As New List(Of Role)(New Role() { _ New Role With {.ID = 1, .RoleDescription = "Manager"}, _ New Role With {.ID = 2, .RoleDescription = "Developer"} _ }) Dim p2 = New Person With {.FirstName = "Tom", .LastName = "Gray"} End Sub
End Module
</source>