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