gpt4 book ai didi

c# - 如何根据存储在单独数组中的值对键数组进行排序

转载 作者:行者123 更新时间:2023-12-01 22:01:50 24 4
gpt4 key购买 nike

如何根据 C# 中单独数组中存储的值对键数组进行排序

示例

int[] keys = new int[] {1, 2, 3, 4, 7};
double[] vals = new double[] {0.5, 0.2, 0.3, 0.1, 0.4};

我想根据 vals 数组中的值对键数组进行排序,即。在键数组中获取以下顺序:

4, 2, 3, 7, 1

我正在尝试执行以下操作

Array.Sort(keys, (a, b) => vals[a].CompareTo(vals[b]));

但我收到以下错误:

Additional information: Unable to sort because the IComparer.Compare() method returns inconsistent results. Either a value does not compare equal to itself, or one value repeatedly compared to another value yields different results. IComparer: 'System.Array+FunctorComparer`1[System.Int32]'.

我猜 a 和 b 参数指的是键值而不是键数组中的键索引。

最佳答案

这对你有用吗?

int[] sorted =
vals
.Zip(keys, (v, i) => new { v, i })
.OrderBy(x => x.v)
.Select(x => x.i)
.ToArray();

这给出了这个结果:

result

关于c# - 如何根据存储在单独数组中的值对键数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34737298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com