C#LINQ返回计数器数组索引max到min

时间:2015-08-31 07:07:44

标签: c# linq

C#和LINQ的新手。 我有一个基本上是计数序列的数组。

  

{1,3,5,2,7,2}

我正在尝试编写一个查询,该查询返回具有最高值的索引列表,按降序排列:

  

4,2,1,3,5,0

我可以通过下面的查询得到最大索引,但我似乎无法弄清楚如何使用单个查询按顺序获取下一个索引。

int index = array.ToList().IndexOf(array.Max());

2 个答案:

答案 0 :(得分:10)

< p>这适用:< / p> < pre>< code> var list = new [] {1,3,5,2,7,2}; var indices =     名单         .Select((n,i)=> new {n,i})         .OrderByDescending(x => x.n)         。选择(x => x.i)         .ToArray(); < /代码>< /预>

答案 1 :(得分:5)

您可以使用Select: -

var result = numbers.Select((v, i) => new { Value = v, Index = i })
                                .OrderByDescending(x => x.Value)
                                .Select(x => x.Index).ToArray();

Working Fiddle