LINQ Query Samples - Partitioning Operators |
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
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
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
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
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
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
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
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