首页 > 代码库 > Linq101-Ordering

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 products101                         orderby p.UnitsInStock descending102                         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 digits127                                orderby d.Length, d128                                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 = words145                 .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 products159                         orderby p.Category, p.UnitPrice descending160                         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 digits185                                 where d[1] == i186                                 select d)187                                 .Reverse();188 189             ObjectDumper.Write(sortedDigits);190         }191     }192 }

 

Linq101-Ordering