2016-05-22 1 views
1

私が最初に少なくとも数と最後の数が最も多いのインデックスのインデックスを持つ同じ値リストをソートするインデックスシーケンスを見つける方法は?

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

を持っていると私は、リストをソートするインデックスシーケンスを取得したいことができフロート番号のリストを、持っています。上記の例では、結果は{5, 0, 1, 4, 3, 2}です。同じ値の場合、順序は関係ありません。それを行う方法は?ありがとう。その指標と

+0

は無関係です。 – dasblinkenlight

答えて

4

ペアアップ要素は、このように、インデックスを収穫、要素上でペアを並べ替える:その質問@WicherVisser

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

Demo.

+0

素晴らしい!私は(1)新しい{v、i}のタイプは何ですか?それはペアですか? (2)なぜコンパイラがインデックスであることを知っているのですか?文法は2番目のパラメータはインデックスであると記述されていますか?ありがとう。 – user1899020

+1

@ user1899020 'new {v、i}'は匿名型です([link](https://msdn.microsoft.com/en-us/library/bb397696.aspx))。コンパイラはこのクエリで使用するためにその場で作成します。コンパイラは 'i'がインデックスであることを知らないので、' this'(2つの引数をとる関数)をとる 'Select'オーバーロードです([This one](https://msdn.microsoft.com/en-us/library/bb534869 v = vs.100).aspx))。 – dasblinkenlight

関連する問題