一般的なリストをDESCとASCで並べ替えるにはどうすればいいですか? 質問する

一般的なリストをDESCとASCで並べ替えるにはどうすればいいですか? 質問する

汎用リストを DESC と ASC で並べ替えるにはどうすればよいですか? LINQ を使用する場合と使用しない場合はどうすればよいですか? VS2008 を使用しています。

class Program
{
    static void Main(string[] args)
    {
        List<int> li = new List<int>();

        li.Add(456);
        li.Add(123);
        li.Add(12345667);
        li.Add(0);
        li.Add(1);

        li.Sort();

        foreach (int item in li)
        {
            Console.WriteLine(item.ToString() + "\n");
        }

        Console.ReadKey();
    }
}

ベストアンサー1

Linqで

var ascendingOrder = li.OrderBy(i => i);
var descendingOrder = li.OrderByDescending(i => i);

Linqなし

li.Sort((a, b) => a.CompareTo(b)); // ascending sort
li.Sort((a, b) => b.CompareTo(a)); // descending sort

Linq を使用しない場合、リスト自体がソートされていることに注意してください。Linq を使用すると、リストの順序付き列挙型が得られますが、リスト自体は変更されません。リストを変更する場合は、Linq メソッドを次のように変更します。

li = li.OrderBy(i => i).ToList();

おすすめ記事