VB.Net/LINQ/TakeWhile

Материал из VB Эксперт
Версия от 12:41, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Take While Example

  
Imports System.Reflection
Imports System

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
Public Class Salary
    Public IDPerson As Integer
    Public Year As Integer
    Public SalaryYear As Double
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 salaries As New List(Of Salary)(New Salary() { _
                New Salary With {.IDPerson = 1, .Year = 2004, .SalaryYear = 10000.0}, _
                New Salary With {.IDPerson = 1, .Year = 2005, .SalaryYear = 15000.0}, _
                New Salary With {.IDPerson = 2, .Year = 2005, .SalaryYear = 15000.0} _
        })
        TakeWhileExample()


    End Sub
    Function takeFunc(ByVal n As Integer, ByVal index As Integer) As Boolean
        Return (n >= index)
    End Function
    Function skipFunc(ByVal n As Integer, ByVal index As Integer) As Boolean
        Return (n >= index)
    End Function

    Public Sub TakeWhileExample()
        Dim numbers As Integer() = New Integer() {9, 3, 5, 4, 2, 6, 7, 1, 8}
        Dim takeDelegate As New Func(Of Integer, Integer, Boolean)(AddressOf takeFunc)
        Dim skipDelegate As New Func(Of Integer, Integer, Boolean)(AddressOf skipFunc)
        Dim query = numbers.TakeWhile(takeDelegate)
        Dim query2 = numbers.SkipWhile(skipDelegate)
    End Sub
End Module