获取前x个相等元素的索引

Eri*_*c B 0 c# linq

我需要在排序的整数列表中获取彼此相等的所有最大元素的索引.

所以给出这个清单

elements:   {1 , 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 11, 11, 12, 13, 13, 13}
index:       0   1  2  3  4  5  6  7  8  9  10 11 12  13  14  15  16  17  18
                                                                  ^   ^   ^
Run Code Online (Sandbox Code Playgroud)

我会得到这个输出

{16,17,18}
Run Code Online (Sandbox Code Playgroud)

到目前为止我已经有了

list.Select((x, i) => new {x, i})
Run Code Online (Sandbox Code Playgroud)

要获得指数,但我不能使用OrderBy()带有First()Single()因为我需要的所有元素最多人指数,不只是极顶一个.

是否有一种优雅的方法来实现这一点(使用LINQ或其他方式)?

Ser*_*kiy 7

因此,对项目进行排序,您只需要获取具有最大值的第一个项目的索引(该项目将与最后一个项目具有完全相同的值),然后创建从此索引开始到列表末尾的索引范围:

var items = new List<int> {1,1,2,3,4,4,5,6,7,7,8,9,10,11,11,12,13,13,13};
int startIndex = items.IndexOf(items[items.Count - 1]);
var indexes = Enumerable.Range(startIndex, items.Count - startIndex);
Run Code Online (Sandbox Code Playgroud)