Skip to main content

Take - Simple

This sample uses Take to get only the first 3 elements of the array.

Public Sub Linq20()
    Dim numbers() = {5, 4, 1, 3, 9, 8, 6, 7, 2, 0}

    Dim first3Numbers = numbers.Take(3)

    Console.WriteLine("First 3 numbers:")
    For Each n In first3Numbers
        Console.WriteLine(n)
    Next
End Sub


Result:
First 3 numbers:
5
4
1


Take - Nested

This sample uses Take to get the first 3 orders from customers in Washington.

Public Sub Linq21()
    Dim customers = GetCustomerList()

    Dim first3WAOrders = From c In customers, o In c.Orders _
        Where c.Region = "WA" Take 3 _
        Select c.CustomerID, o.OrderID, o.OrderDate

    Console.WriteLine("First 3 orders in WA:")
    For Each ord In first3WAOrders
        ObjectDumper.Write(ord)
    Next
End Sub


Result:
First 3 orders in WA:
CustomerID=LAZYK OrderDate=3/21/1997 OrderID=10482
CustomerID=LAZYK OrderDate=5/22/1997 OrderID=10545
CustomerID=TRAIH OrderDate=6/19/1997 OrderID=10574


Skip - Simple

This sample uses Skip to get all but the first 4 elements of the array.

Public Sub Linq22()
    Dim numbers() = {5, 4, 1, 3, 9, 8, 6, 7, 2, 0}

    Dim allButFirst4Numbers = From n In numbers Skip 4

    Console.WriteLine("All but first 4 numbers:")
    For Each n In allButFirst4Numbers
        Console.WriteLine(n)
    Next
End Sub


Result:
All but first 4 numbers:
9
8
6
7
2
0


Skip - Nested

This sample uses Take to get all but the first 2 orders from customers in Washington.

Public Sub Linq23()
    Dim customers = GetCustomerList()

    Dim allButFirst2Orders = From c In customers, o In c.Orders _
        Where c.Region = "WA" _
        Select c.CustomerID, o.OrderID, o.OrderDate Skip 2


    Console.WriteLine("All but first 2 orders in WA:")
    For Each ord In allButFirst2Orders
        ObjectDumper.Write(ord)
    Next
End Sub


Result:
All but first 2 orders in WA:
CustomerID=TRAIH OrderDate=6/19/1997 OrderID=10574
CustomerID=TRAIH OrderDate=6/23/1997 OrderID=10577
CustomerID=TRAIH OrderDate=1/8/1998 OrderID=10822
CustomerID=WHITC OrderDate=7/31/1996 OrderID=10269
CustomerID=WHITC OrderDate=11/1/1996 OrderID=10344
CustomerID=WHITC OrderDate=3/10/1997 OrderID=10469
CustomerID=WHITC OrderDate=3/24/1997 OrderID=10483
CustomerID=WHITC OrderDate=4/11/1997 OrderID=10504
CustomerID=WHITC OrderDate=7/11/1997 OrderID=10596
CustomerID=WHITC OrderDate=10/6/1997 OrderID=10693
CustomerID=WHITC OrderDate=10/8/1997 OrderID=10696
CustomerID=WHITC OrderDate=10/30/1997 OrderID=10723
CustomerID=WHITC OrderDate=11/13/1997 OrderID=10740
CustomerID=WHITC OrderDate=1/30/1998 OrderID=10861
CustomerID=WHITC OrderDate=2/24/1998 OrderID=10904
CustomerID=WHITC OrderDate=4/17/1998 OrderID=11032
CustomerID=WHITC OrderDate=5/1/1998 OrderID=11066


TakeWhile - Simple

This sample uses TakeWhile to return elements starting from the beginning of the array until a number is hit that is not less than 6.

Public Sub Linq24()
    Dim numbers() = {5, 4, 1, 3, 9, 8, 6, 7, 2, 0}

    Dim firstNumbersLessThan6 = numbers.TakeWhile(Function(n) n < 6)

    Console.WriteLine("First numbers less than 6:")
    For Each n In firstNumbersLessThan6
        Console.WriteLine(n)
    Next
End Sub


Result:
First numbers less than 6:
5
4
1
3


TakeWhile - Indexed

This sample uses TakeWhile to return elements starting from the beginning of the array until a number is hit that is less than its position in the array.

Public Sub Linq25()
    Dim numbers() = {5, 4, 1, 3, 9, 8, 6, 7, 2, 0}

    Dim firstSmallNumbers = numbers.TakeWhile(Function(n, index) n >= index)

    Console.WriteLine("First numbers not less than their position:")
    For Each n In firstSmallNumbers
        Console.WriteLine(n)
    Next
End Sub


Result:
First numbers not less than their position:
5
4


SkipWhile - Simple

This sample uses SkipWhile to get the elements of the array starting from the first element divisible by 3.

Public Sub Linq26()
    Dim numbers() = {5, 4, 1, 3, 9, 8, 6, 7, 2, 0}
    Dim allButFirst3Numbers = numbers.SkipWhile(Function(n) n Mod 3 <> 0)

    Console.WriteLine("All elements starting from first element divisible by 3:")
    For Each n In allButFirst3Numbers
        Console.WriteLine(n)
    Next
End Sub


Result:
All elements starting from first element divisible by 3:
3
9
8
6
7
2
0


SkipWhile - Indexed

This sample uses SkipWhile to get the elements of the array starting from the first element less than its position.

Public Sub Linq27()
    Dim numbers() = {5, 4, 1, 3, 9, 8, 6, 7, 2, 0}

    Dim laterNumbers = numbers.SkipWhile(Function(n, index) n >= index)

    Console.WriteLine("All elements starting from first element less than its position:")
    For Each n In laterNumbers
        Console.WriteLine(n)
    Next
End Sub


Result:
All elements starting from first element less than its position:
1
3
9
8
6
7
2
0