Linq101-Ordering

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 
  5 namespace Linq101
  6 {
  7     class Ordering
  8     {
  9         /// <summary>
 10         /// This sample uses orderby to sort a list of words alphabetically.
 11         /// </summary>
 12         public void Linq28()
 13         {
 14             string[] words = { "cherry", "apple", "blueberry" };
 15 
 16             var sortedWords = from w in words
 17                               orderby w
 18                               select w;
 19 
 20             Console.WriteLine("The sorted list of words:");
 21             foreach (var word in sortedWords)
 22             {
 23                 Console.WriteLine(word);
 24             }
 25         }
 26 
 27         /// <summary>
 28         /// This sample uses orderby to sort a list of words by length.
 29         /// </summary>
 30         public void Linq29()
 31         {
 32             string[] words = { "cherry", "apple", "blueberry" };
 33 
 34             var sortedWords = from w in words
 35                               orderby w.Length
 36                               select w;
 37 
 38             Console.WriteLine("The sorted list of words( by length ):");
 39             foreach (var word in sortedWords)
 40             {
 41                 Console.WriteLine(word);
 42             }
 43         }
 44 
 45         /// <summary>
 46         /// This sample uses orderby to sort a list of products by name.
 47         /// </summary>
 48         public void Linq30()
 49         {
 50             var products = Data.GetProductList();
 51 
 52             var query = from p in products
 53                         orderby p.ProductName
 54                         select p;
 55 
 56             ObjectDumper.Write(query);
 57         }
 58 
 59         /// <summary>
 60         /// This sample uses an OrderBy clause with a custom comparer to do a case-insensitive sort of the words in an array.
 61         /// </summary>
 62         public void Linq31()
 63         {
 64             string[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry" };
 65 
 66             var query = words.OrderBy(w => w, new CaseInsensitiveComparer());
 67 
 68             ObjectDumper.Write(query);
 69         }
 70 
 71         private class CaseInsensitiveComparer : IComparer<string>
 72         {
 73             public int Compare(string x, string y)
 74             {
 75                 return string.Compare(x, y, StringComparison.InvariantCultureIgnoreCase);
 76             }
 77         }
 78 
 79         /// <summary>
 80         /// This sample uses orderby and descending to sort a list of doubles from highest to lowest.
 81         /// </summary>
 82         public void Linq32()
 83         {
 84             double[] doubles = { 1.7, 2.3, 1.9, 4.1, 2.9 };
 85 
 86             var sortedDoubles = from d in doubles
 87                                 orderby d descending
 88                                 select d;
 89 
 90             ObjectDumper.Write(sortedDoubles);
 91         }
 92 
 93         /// <summary>
 94         /// This sample uses orderby to sort a list of products by units in stock from highest to lowest.
 95         /// </summary>
 96         public void Linq33()
 97         {
 98             var products = Data.GetProductList();
 99 
100             var query = from p in products
101                         orderby p.UnitsInStock descending
102                         select p;
103 
104             ObjectDumper.Write(query);
105         }
106 
107         /// <summary>
108         /// This sample uses an OrderBy clause with a custom comparer to do a case-insensitive descending sort of the words in an array.
109         /// </summary>
110         public void Linq34()
111         {
112             string[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry" };
113 
114             var query = words.OrderByDescending(w => w, new CaseInsensitiveComparer());
115 
116             ObjectDumper.Write(query);
117         }
118 
119         /// <summary>
120         /// This sample uses a compound orderby to sort a list of digits, first by length of their name, and then alphabetically by the name itself.
121         /// </summary>
122         public void Linq35()
123         {
124             string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
125 
126             var sortedDigits = from d in digits
127                                orderby d.Length, d
128                                select d;
129 
130             Console.WriteLine("Sorted digits:");
131             foreach (var d in sortedDigits)
132             {
133                 Console.WriteLine(d);
134             }
135         }
136 
137         /// <summary>
138         /// This sample uses an OrderBy and a ThenBy clause with a custom comparer to sort first by word length and then by a case-insensitive sort of the words in an array.
139         /// </summary>
140         public void Linq36()
141         {
142             string[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry" };
143 
144             var sortedWords = words
145                 .OrderBy(w => w.Length)
146                 .ThenBy(w => w, new CaseInsensitiveComparer());
147 
148             ObjectDumper.Write(sortedWords);
149         }
150 
151         /// <summary>
152         /// This sample uses a compound orderby to sort a list of products, first by category, and then by unit price, from highest to lowest.
153         /// </summary>
154         public void Linq37()
155         {
156             var products = Data.GetProductList();
157 
158             var query = from p in products
159                         orderby p.Category, p.UnitPrice descending
160                         select p;
161 
162             ObjectDumper.Write(query);
163         }
164 
165         /// <summary>
166         /// This sample uses an OrderBy and a ThenBy clause with a custom comparer to sort first by word length and then by a case-insensitive descending sort of the words in an array.
167         /// </summary>
168         public void Linq38()
169         {
170             string[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry" };
171 
172             var sortedWords = words.OrderBy(w => w.Length).ThenByDescending(w => w, new CaseInsensitiveComparer());
173 
174             ObjectDumper.Write(sortedWords);
175         }
176 
177         /// <summary>
178         /// This sample uses Reverse to create a list of all digits in the array whose second letter is 'i' that is reversed from the order in the original array.
179         /// </summary>
180         public void Linq39()
181         {
182             string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
183 
184             var sortedDigits = (from d in digits
185                                 where d[1] == 'i'
186                                 select d)
187                                 .Reverse();
188 
189             ObjectDumper.Write(sortedDigits);
190         }
191     }
192 }

 

posted @ 2014-12-30 16:32  David Huang  阅读(255)  评论(0编辑  收藏  举报