c# - 如何找到索引序列来对列表进行排序?

标签 c# list sorting

我有一个可以具有相同值的 float 列表

List<float> l = new List<float>{1, 2, 6, 4, 2, 0};

我想得到索引序列来对列表进行排序,其中最小数字的索引在前,最大数字的索引在最后。对于上面的例子,结果是 {5, 0, 1, 4, 3, 2}。对于相同值的数字,顺序无关紧要。有什么办法吗?谢谢。

最佳答案

将元素与其索引配对,对元素进行排序,然后收获索引,如下所示:

var res = l.Select((v, i) => new {v, i})
    .OrderBy(p => p.v)
    .Select(p => p.i)
    .ToList();

Demo.

关于c# - 如何找到索引序列来对列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37372379/

相关文章:

javascript - 输出树状对象

c - 根据另一个数组中定义的排序顺序对数组进行适当排序

c++ - 使用 Qt/C++ 的排序算法 - 对结构的 QList 进行排序

c# - 工具提示编码问题

带有接口(interface)的 C# 重载方法行为

python - 如何将列表拆分为相等的子列表,最后一个子列表由列表的第一个可能元素组成

c++ - 从一个巨大的列表中删除大量字符串

sorting - Unity - 对来自同一预制件的对象交织在一起的层进行排序

c# - (附加)EF 无法从 #temp 表中选择的存储过程推断返回架构

c# - 使用 linq 选择不同的