一つの二次元配列に入ったデータをソートするのではなく、二つの互いに関連するデータが格納された配列をソートするのであれば、Array.Sortメソッドを使うことが出来ます。 Array.Sortメソッドには配列を二つ引数にとるバージョンのオーバーロードが用意されていて、これを用いると一方の配列の値をキーとしてもう一方の配列をソートすることが出来ます。 これは基本型のソートと昇順・降順でのソート §.Dictionaryのソートでも解説しているもので、キーと値の関係にある二つの配列をソートするために使えます。

次の例では、このメソッドを使い、次の表のようにIDと名前からなるデータをそれぞれ個別の配列に格納し、IDの順に名前の配列をソートしています。

ID (int[]) Name (string[])
5 "Charlie"
3 "Bob"
2 "Alice"
4 "Eve"
1 "Dave"
キー・値ペアの配列をソートする
using System;

class Sample {
  static void Main()
  {
    int[] ids = new int[] {5, 3, 2, 4, 1};
    string[] names = new string[] {"Charlie", "Bob", "Alice", "Eve", "Dave"};

    // IDをキーとして名前の配列をソート
    Array.Sort(ids, names);

    for (int i = 0; i < ids.Length; i++) {
      Console.WriteLine("{0} {1}", ids[i], names[i]);
    }
  }
}
実行結果
1 Dave
2 Alice
3 Bob
4 Eve
5 Charlie