VB.Net/LINQ/Func
Версия от 16:40, 26 мая 2010; (обсуждение)
Func with user-defined function
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 predicate As New Func(Of Person, Boolean)(AddressOf wherePredicate)
Dim query = people.Where(predicate)
End Sub
Public Function wherePredicate(ByVal p As Person) As Boolean
Return p.ID = 1
End Function
End Module
Using Func to do filter
Module Program
Sub Main()
Dim currentVideoGames As String() = {"A", "B", "this is a test", "C", "D", "E"}
Dim searchFilter As New Func(Of String, Boolean)(AddressOf Filter)
Dim itemToProcess As New Func(Of String, String)(AddressOf ProcessItem)
Dim subset = currentVideoGames.Where(searchFilter).OrderBy(itemToProcess).Select(itemToProcess)
For Each game In subset
Console.WriteLine("Item: {0}", game)
Next
End Sub
Function Filter(ByVal str As String) As Boolean
Return str.Length > 6
End Function
Function ProcessItem(ByVal str As String) As String
Return str
End Function
End Module
Using Func to do filter 2
Module Program
Sub Main()
Dim currentVideoGames As String() = {"A", "B", "this is a test", "C","D", "E"}
Dim subset = From g In currentVideoGames Where g.Length > 6 Order By g Select g
For Each s As String In subset
Console.WriteLine("Item: {0}", s)
Next
End Sub
End Module