1

これは [ Get N max numbers from a List<int> using lambda expression ] に似た質問です

しかし、それらの N max 数のインデックスを保持したい場合は、ラムダ式を使用してどのように記述すればよいかを知りたいです。

例)List<int> numbers = new List<int> { 12, 5, -8, 4, 7, 28, 3, 22 };

ラムダで最大4つの数値を取得するにはどうすればよいですか:{28, 22, 12, 7}プラスインデックス{ 5, 7, 0, 4}

キリルが示唆したように:var result = numbers.OrderByDescending(n => n).Take(4);しかし、どうすればそれらの N max 番号のインデックスを取得できますか? それは double[,] 2D 配列 ( リストではありません )

4

1 に答える 1

3

注意してください:OrderBy + Take「トップN」をはるかに高速に実行できるO(N * Log(N))操作です。https://codereview.stackexchange.com/questions/9773/optimizing-liststring-performance-in-c/9777#9777

と言いました;

List<int> numbers = new List<int>() { 12, 5, -8, 4, 7, 28, 3, 22 };
var list = numbers.Select((n, i) => new { Num=n, Inx=i })
                    .OrderByDescending(x => x.Num)
                    .Take(4)
                    .ToList();
于 2012-11-02T22:29:52.160 に答える