文字列をソートする際、場合によっては大文字小文字の違いをどう扱うか厳密に決める必要が出て来ます。 その場合は、StringComparerを使ってどう扱うかを指定することができます。 Sortメソッド、OrderByメソッドともにIComparerを引数に取ることができ、これにStringComparerを指定することで、文字列比較の際の動作を指定できます。

OrderBy + IComparerによって大文字・小文字の違いを考慮したソートを行う
using System;
using System.Collections.Generic;
using System.Linq;

class Sample {
  static void Main()
  {
    var list = new List<string>(new string[] {
      "ab", "ABC", "AA", "a", "aa", "abc", "A",
    });

    // 大文字・小文字の違いを無視してソート
    var ord1 = list.OrderBy(s => s, StringComparer.OrdinalIgnoreCase);

    Console.WriteLine(string.Join(", ", ord1));

    // 大文字・小文字の違いを意識してソート
    var ord2 = list.OrderBy(s => s, StringComparer.Ordinal);

    Console.WriteLine(string.Join(", ", ord2));
  }
}
実行結果
a, A, AA, aa, ab, ABC, abc
A, AA, ABC, a, aa, ab, abc

なお、IComparerについては大小関係の定義と比較、StringComparerについて文字列と比較オプション・カルチャの並べ替え規則で詳しく解説しています。

MENTAにてテキストチャットによるサポートを行っています。 問題の解決法をお探しの方や.NET/C#を学習中の方はどうぞご利用ください。