1 using System;
2 using System.Linq;
3
4 namespace Linq101
5 {
6 class Restriction
7 {
8 /// <summary>
9 /// This sample uses where to find all elements of an array less than 5.
10 /// </summary>
11 public void Linq1()
12 {
13 int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
14
15 var query = from n in numbers
16 where n < 5
17 select n;
18
19 Console.WriteLine("Numbers < 5 :");
20 foreach (var number in query)
21 {
22 Console.WriteLine(number);
23 }
24 }
25
26 /// <summary>
27 /// This sample uses where to find all products that are out of stock.
28 /// </summary>
29 public void Linq2()
30 {
31 var productList = Data.GetProductList();
32
33 var query = from product in productList
34 where product.UnitsInStock == 0
35 select product;
36
37 Console.WriteLine("Sold out products:");
38 foreach (var product in query)
39 {
40 Console.WriteLine("{0} is sold out!", product.ProductName);
41 }
42 }
43
44 /// <summary>
45 /// This sample uses where to find all products that are in stock and cost more than 3.00 per unit.
46 /// </summary>
47 public void Linq3()
48 {
49 var productList = Data.GetProductList();
50
51 var query = from product in productList
52 where product.UnitsInStock > 0 && product.UnitPrice > 3.00M
53 select product;
54
55 Console.WriteLine("In-stock products that cost more than 3.00:");
56 foreach (var product in query)
57 {
58 Console.WriteLine("{0} is in stock and cost more than 3.00", product.ProductName);
59 }
60 }
61
62 /// <summary>
63 /// This sample uses where to find all customers in Washington and then uses the resulting sequence to drill down into their orders.
64 /// </summary>
65 public void Linq4()
66 {
67 var customerList = Data.GetCustomerList();
68
69 var query = from customer in customerList
70 where customer.Region == "WA"
71 select customer;
72
73 Console.WriteLine("Cutomers from Washington and their orders:");
74 foreach (var customer in query)
75 {
76 Console.WriteLine("Customer {0}:{1}", customer.CustomerID, customer.CompanyName);
77 foreach (var order in customer.Orders)
78 {
79 Console.WriteLine(" Order {0}:{1}", order.OrderID, order.OrderDate);
80 }
81 }
82 }
83
84 /// <summary>
85 /// This sample demonstrates an indexed Where clause that returns digits whose name is shorter than their value.
86 /// </summary>
87 public void Linq5()
88 {
89 string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
90
91 var query = digits.Where((digit, index) => digit.Length < index);
92
93 Console.WriteLine("Short digits:");
94 foreach (var digit in query)
95 {
96 Console.WriteLine("The word {0} is shorter than its value.", digit);
97 }
98 }
99 }
100 }