如何找到索引序列来排序列表?

时间:2016-05-22 08:59:13

标签: c# list sorting

我有一个可以具有相同值的浮点数列表

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

我想得到索引序列来对列表进行排序,其中索引的编号最小,最后一个索引最大。对于上面的示例,结果为{5, 0, 1, 4, 3, 2}。对于相同的有价值的数字,顺序并不重要。有办法吗?感谢。

1 个答案:

答案 0 :(得分:4)

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

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

Demo.