リストの要素を降順にソートするメソッドは2つあります。
方法 | メソッド名 |
---|---|
① |
Sort |
② |
OrderByDescending |
共通の仕様
なし
異なる仕様
方法 | メソッド名 |
戻り値 |
計算方法 |
比較方法 |
---|---|---|---|---|
① |
Sort | なし | 先行評価:即座に計算が行われる | 比較メソッド |
② |
OrderByDescending | あり | 遅延評価:値が必要になった時に計算が行われる | キー |
Sortは比較メソッドがないと昇順にソートされます。
例
コード
using System; using System.Collections.Generic; using System.Linq; namespace Sample { /// <summary> /// メインプログラム /// </summary> public class Program { /// <summary> /// 方法の比較 /// </summary> static void Main() { // リストを生成 var list = new List<int>(); // リストに値を追加 list.Add(10); list.Add(1); list.Add(0); list.Add(3); list.Add(7); list.Add(5); var list1 = new List<int>(list); var list2 = new List<int>(list); var list3 = new List<int>(list); // Sortの場合 list1.Sort(); list2.Sort((a, b) => b - a); Console.WriteLine("Sort 比較メソッドなし : " + string.Join(", ", list1)); Console.WriteLine("Sort 比較メソッドあり : " + string.Join(", ", list2)); // OrderByDescendingの場合 IOrderedEnumerable<int> result = list3.OrderByDescending(n => n); Console.WriteLine("OrderByDescending : " + string.Join(", ", result)); } } }
出力
Sort 比較メソッドなし : 0, 1, 3, 5, 7, 10 Sort 比較メソッドあり : 10, 7, 5, 3, 1, 0 OrderByDescending : 10, 7, 5, 3, 1, 0