C# C语言中的多数组排序#

C# C语言中的多数组排序#,c#,arrays,C#,Arrays,我有以下几点: int[] a = {5, 2, 3}; int[] b = {4, 1, 2}; string[] c = {"John", "Peter", "Max"}; 我需要对值进行排序​​例如,第二个数组(b[]),但与其他两个数组相关,以便它们得到相应的排序。例如,1将排在第一位,因为它是最低的数字,而b[]中的1与a[]中的2相关,并且c[]中的“Peter”也将移动到第一个排序位置。其他两列也是如此;注意: int[] a = {2, 3, 5}; int[] b =

我有以下几点:

int[] a = {5, 2, 3}; 
int[] b = {4, 1, 2}; 
string[] c = {"John", "Peter", "Max"};
我需要对值进行排序​​例如,第二个数组(b[]),但与其他两个数组相关,以便它们得到相应的排序。例如,
1
将排在第一位,因为它是最低的数字,而
b[]
中的
1
a[]
中的
2
相关,并且
c[]
中的
“Peter”
也将移动到第一个排序位置。其他两列也是如此;注意:

int[] a = {2, 3, 5}; 
int[] b = {1, 2, 4}; 
string[] c = {"Peter", "Max", "John"};

我该如何做到这一点?

您可能希望查看,或者如果可以的话,使用专用类将数据链接在一起,而不是将数据存储在单独的非关联数组中。

是否可以合并数组,使每个项都代表一个完整的记录

// using anonymous types for simplicity
var source = new[] {
    new { a = 5, b = 4, c = "John" },
    new { a = 2, b = 1, c = "Peter" },
    new { a = 3, b = 2, c = "Max" }
};
var results = source.OrderBy(x => x.a);

我想我明白你的意思。您希望根据
b
的值对数组
a
c
进行排序

您可以使用
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; }
}
它变得容易多了


这使用的是,这非常适合您要做的事情。

您的问题不太清楚。你是在试图根据另一个数组的值对一个数组进行排序吗?你只是在问如何对数组进行排序吗?我的假设是,他想通过对网格中的一列进行排序来有效地对网格进行排序。为什么不使用DataTable来实现这一目的,其中
a
b
c
是int、int、string类型的数据列?
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();