排序数字并获得c#中的排名

时间:2014-10-18 09:16:18

标签: c# sorting ranking

我们如何在double[]中对c#数组进行排序并获得排名。 例如,考虑排序

[4 5 3 1 6] 

按降序排列。

我想将每个元素映射到排序列表中的索引。例如,如果我对列表进行排序,我会得到[6 5 4 3 2 1],所以6的索引是1,5的索引是2,依此类推。所需的输出是:

[3     2     4     5     1]

我搜索了很多但没有找到任何东西

1 个答案:

答案 0 :(得分:1)

使用Linq:

    private static void Main(string[] args)
    {
         var ints = new[] { 4, 5, 3, 1, 6 };
         foreach (var item in ints.Select((x, i)=>new { OldIndex = i, Value = x, NewIndex = -1})
                                  .OrderByDescending(x=>x.Value)
                                  .Select((x, i) => new { OldIndex = x.OldIndex, Value = x.Value, NewIndex = i + 1})
                                  .OrderBy(x=>x.OldIndex))
             Console.Write(item.NewIndex + " ");

    }