私はあなたが言っていることを理解していると思います。の値に基づいて配列a
をソートしたいとします。c
b
配列を別の配列で並べ替えることがArray.Sort
できます。これを使用すると、次のようにキーに別の配列を指定できます。
int[] a = { 5, 2, 3 };
int[] b = { 4, 1, 2 };
string[] c = { "John", "Peter", "Max" };
Array.Sort(b.ToArray(), c);
Array.Sort(b.ToArray(), a);
Array.Sort(b);
Console.WriteLine(string.Join(", ", a));
Console.WriteLine(string.Join(", ", b));
Console.WriteLine(string.Join(", ", c));
これにより、期待値が出力されます。ToArray
キーで並べ替えるときに配列のコピーを作成するために使用することに注意してくださいArray.Sort
。これは、不要なキーと値の両方を並べ替えるためです。b
キー(この場合)は最後までソートされません。
それが私たちがあなたの当面の問題を解決する方法です。ただし、コメントから収集すると、表形式のデータを並べ替えようとしています。データに何らかの構造がある場合は、次のように言います。
public class Item
{
public int A { get; set; }
public int B { get; set; }
public string C { get; set; }
}
ずっと簡単になります。
var items = new[]
{
new Item {A = 5, B = 4, C = "John"},
new Item {A = 2, B = 1, C = "Peter"},
new Item {A = 3, B = 2, C = "Max"},
};
var sortedItems = items.OrderBy(i => i.B).ToArray();
これはLINQ
、あなたがやろうとしていることに最適なを使用します。