1 using System;
2 using System.Linq;
3
4 namespace Linq101
5 {
6 class Partitioning
7 {
8 /// <summary>
9 /// This sample uses Take to get only the first 3 elements of the array.
10 /// </summary>
11 public void Linq20()
12 {
13 int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
14
15 var query = numbers.Take(3);
16
17 Console.WriteLine("First 3 numbers:");
18 foreach (var n in query)
19 {
20 Console.WriteLine(n);
21 }
22 }
23
24 /// <summary>
25 /// This sample uses Take to get the first 3 orders from customers in Washington.
26 /// </summary>
27 public void Linq21()
28 {
29 var customers = Data.GetCustomerList();
30
31 var query = (from c in customers
32 from o in c.Orders
33 where c.Region == "WA"
34 select new { c.CustomerID, o.OrderID, o.OrderDate })
35 .Take(3);
36
37 //var query = (from c in customers
38 // where c.Region == "WA"
39 // from o in c.Orders
40 // select new { c.CustomerID, o.OrderID, o.OrderDate })
41 // .Take(3);
42
43 Console.WriteLine("First 3 orders in WA:");
44 foreach (var order in query)
45 {
46 ObjectDumper.Write(order);
47 }
48 }
49
50 /// <summary>
51 /// This sample uses Skip to get all but the first 4 elements of the array.
52 /// </summary>
53 public void Linq22()
54 {
55 int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
56
57 var query = numbers.Skip(4);
58
59 Console.WriteLine("All but first 4 numbers:");
60 foreach (var n in query)
61 {
62 Console.WriteLine(n);
63 }
64 }
65
66 /// <summary>
67 /// This sample uses Take to get all but the first 2 orders from customers in Washington.
68 /// </summary>
69 public void Linq23()
70 {
71 var customers = Data.GetCustomerList();
72
73 var query = (from c in customers
74 where c.Region == "WA"
75 from o in c.Orders
76 select new { c.CustomerID, o.OrderID, o.OrderDate })
77 .Skip(2);
78
79 foreach (var order in query)
80 {
81 ObjectDumper.Write(order);
82 }
83 }
84
85 /// <summary>
86 /// 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.
87 /// </summary>
88 public void Linq24()
89 {
90 int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
91
92 var query = numbers.TakeWhile(n => n < 6);
93
94 foreach (var n in query)
95 {
96 Console.WriteLine(n);
97 }
98 }
99
100 /// <summary>
101 /// 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.
102 /// </summary>
103 public void Linq25()
104 {
105 int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
106
107 var query = numbers.TakeWhile((number, index) => number > index);
108
109 foreach (var n in query)
110 {
111 Console.WriteLine(n);
112 }
113 }
114
115 /// <summary>
116 /// This sample uses SkipWhile to get the elements of the array starting from the first element divisible by 3.
117 /// </summary>
118 public void Linq26()
119 {
120 int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
121
122 var query = numbers.SkipWhile(n => n % 3 != 0);
123
124 foreach (var n in query)
125 {
126 Console.WriteLine(n);
127 }
128 }
129
130 /// <summary>
131 /// This sample uses SkipWhile to get the elements of the array starting from the first element less than its position.
132 /// </summary>
133 public void Linq27()
134 {
135 int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
136
137 var query = numbers.SkipWhile((number, index) => number > index);
138
139 foreach (var n in query)
140 {
141 Console.WriteLine(n);
142 }
143 }
144 }
145 }