按与给定数组相同的顺序对数组进行排序

时间:2016-11-30 04:04:42

标签: c# .net sorting

我有一些以任意顺序指定的唯一值数组;我有另一个(几乎)与第一个数组相同的值的数组,但是某些值可能会丢失,并且它们以完全不同的方式排序。
如何以与第一个数组相同的顺序对第二个数组中的值进行排序?

UPD例如:

阵列1:4,8,2,5,9,3 阵列2:5,8,4,2 要求的结果:4,8,2,5

3 个答案:

答案 0 :(得分:3)

int[] array1 = new int[] { 4, 8, 2, 5, 9, 3 };
int[] array2 = new int[] { 5, 8, 4, 2 };


array2 = array1.Intersect(array2).ToArray();

答案 1 :(得分:3)

您可以检查数组1中的每个元素是否都存在于数组2中并按顺序获取它们:

  var result = array1.Where(a => array2.Contains(a));

答案 2 :(得分:0)

好的,我们考虑逻辑而不是代码。

如果我们考虑第二个数组是第一个数组的子集的情况我们可以做一件事。让我们创建一个大小为第一个数组的布尔类型的数组。考虑第二个数组的每个元素并遍历第一个数组。如果找到匹配项,则将相应的布尔索引设为TRUE。最后,您将获得一个TRUE和FALSE组合的布尔数组。然后你可以用布尔值TRUE打印第一个数组的所有索引。