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数组,这是我想要的。那么,是否有可能这样排序呢?
假设你有两个这样的数组:
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();