我想我明白你在说什么。您想要对数组进行排序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
,非常适合您尝试做的事情。