2009-07-11 Michael Barker <mike@middlesoft.co.uk>
[mono.git] / mcs / class / System.Data.Linq / src / DbLinq / Test / Providers / Linq_101_Samples / OrderBy.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Linq;\r
4 using System.Text;\r
5 using Test_NUnit;\r
6 using NUnit.Framework;\r
7 \r
8 using nwind;\r
9 \r
10 // test ns Linq_101_Samples\r
11 #if MYSQL\r
12     namespace Test_NUnit_MySql.Linq_101_Samples\r
13 #elif ORACLE && ODP\r
14     namespace Test_NUnit_OracleODP.Linq_101_Samples\r
15 #elif ORACLE\r
16     namespace Test_NUnit_Oracle.Linq_101_Samples\r
17 #elif POSTGRES\r
18     namespace Test_NUnit_PostgreSql.Linq_101_Samples\r
19 #elif SQLITE\r
20     namespace Test_NUnit_Sqlite.Linq_101_Samples\r
21 #elif INGRES\r
22     namespace Test_NUnit_Ingres.Linq_101_Samples\r
23 #elif MSSQL && L2SQL\r
24     namespace Test_NUnit_MsSql_Strict.Linq_101_Samples\r
25 #elif MSSQL\r
26     namespace Test_NUnit_MsSql.Linq_101_Samples\r
27 #elif FIREBIRD\r
28     namespace Test_NUnit_Firebird.Linq_101_Samples\r
29 #endif\r
30 {\r
31     [TestFixture]\r
32     public class OrderBy : TestBase\r
33     {\r
34         [Test(Description = "OrderBy - Simple. This sample uses orderby to sort Employees by hire date.")]\r
35         public void LinqToSqlOrderBy01()\r
36         {\r
37             Northwind db = CreateDB();\r
38 \r
39             var q = from e in db.Employees\r
40                     orderby e.HireDate\r
41                     select e;\r
42 \r
43             var list = q.ToList();\r
44             Assert.IsTrue(list.Count > 0);\r
45         }\r
46 \r
47         [Test(Description = "OrderBy - With where. This sample uses where and orderby to sort Orders shipped to London by freight.")]\r
48         public void LinqToSqlOrderBy02()\r
49         {\r
50             Northwind db = CreateDB();\r
51 \r
52             var q = from o in db.Orders\r
53                     where o.ShipCity == "Marseille"\r
54                     orderby o.Freight\r
55                     select o;\r
56 \r
57             var list = q.ToList();\r
58             Assert.IsTrue(list.Count > 0);\r
59         }\r
60 \r
61         [Test(Description = "OrderByDescending. This sample uses orderby to sort Products by unit price from highest to lowest.")]\r
62         public void LinqToSqlOrderBy03()\r
63         {\r
64             Northwind db = CreateDB();\r
65 \r
66             var q = from p in db.Products\r
67                     orderby p.UnitPrice descending\r
68                     select p;\r
69 \r
70             var list = q.ToList();\r
71             Assert.IsTrue(list.Count > 0);\r
72         }\r
73 \r
74         [Test(Description = "ThenBy. This sample uses a compound orderby to sort Customers by city and then contact name.")]\r
75         public void LinqToSqlOrderBy04()\r
76         {\r
77             Northwind db = CreateDB();\r
78 \r
79             var q = from c in db.Customers\r
80                     orderby c.City, c.ContactName\r
81                     select c;\r
82 \r
83             var list = q.ToList();\r
84             Assert.IsTrue(list.Count > 0);\r
85         }\r
86 \r
87         [Test(Description = "ThenByDescending. This sample uses orderby to sort Orders from EmployeeID 1 by ship-to country, and then by freight from highest to lowest.")]\r
88         public void LinqToSqlOrderBy05()\r
89         {\r
90             Northwind db = CreateDB();\r
91 \r
92             var q = from o in db.Orders\r
93                     where o.EmployeeID == 1\r
94                     orderby o.ShipCountry, o.Freight descending\r
95                     select o;\r
96 \r
97             var list = q.ToList();\r
98             Assert.IsTrue(list.Count > 0);\r
99         }\r
100 \r
101 #if !DEBUG && (SQLITE || (MSSQL && !L2SQL))\r
102         [Explicit]\r
103 #endif\r
104         [Test(Description = "OrderBy - Group by. This sample uses Orderby, Max and Group by to find the Products that have the highest unit price in each category, and sorts the group by category id.")]\r
105         public void LinqToSqlOrderBy06()\r
106         {\r
107             Northwind db = CreateDB();\r
108 \r
109             var categories = from p in db.Products\r
110                              orderby p.CategoryID\r
111                              group p by p.CategoryID into Group\r
112                              select new\r
113                              {\r
114                                  Group,\r
115                                  MostExpensiveProducts =\r
116                                      from p2 in Group\r
117                                      where p2.UnitPrice == Group.Max(p3 => p3.UnitPrice)\r
118                                      select p2\r
119                              };\r
120 \r
121             var list = categories.ToList();\r
122             Assert.IsTrue(list.Count > 0);\r
123         }\r
124     }\r
125 }\r