c#在索引相同的情况下对两个数组进行排序

本文关键字:两个 数组 排序 索引 情况下 | 更新日期: 2023-09-27 18:18:34

我有两个数组:

int[] x1 = { 1, 2, 1, 2 };
int[] x2 = { 3, 1, 2, 3 };

,然后用

排序
Array.Sort(x1, x2);

数组是这样的:

int[] x1 = { 1, 1, 2, 2 };
int[] x2 = { 3, 2, 1, 3 };

但是我想让数组x2看起来像这样:

{3,2,3,1}

问题是,如果。sort在第一个数组(index,这里是x1)中看到相同的数字,它只会排序相同的数字,因为它们彼此之后,不会看x2数组,这是我想要的。那么,是否有可能这样排序呢?

c#在索引相同的情况下对两个数组进行排序

假设你有两个这样的数组:

int[] x1 = { 1, 2, 1, 2}; 
int[] x2 = {3, 1, 2, 3};

我要做的第一件事是将它们连接在一起并应用排序。使用一些Linq:

,这非常简单。
var joined = x1.Zip(x2, (a, b) => new { a, b })
   .OrderBy(x => x.a)
   .ThenByDescending(x => x.b);

现在您可以将它们拆分为组成数组:

x1 = joined.Select(x => x.a).ToArray();
x2 = joined.Select(x => x.b).ToArray();