どのように私は順序を決定する値としてタプルの最初の要素を使用してList<Tuple<int, int>>
、降順でソートするに行きますか?それはインプレースでなければならず、私は新しいリストを返すLINQを使ってそれを行う方法しか知りません。ソート一覧<タプル<int, int>>インプレース
答えて
:あなたはComparison<T>
デリゲートを受け取るオーバーロードやIComparer<T>
を使用することができます。後者はおそらく、インラインを指定する方が簡単です:あなたが最初の値と2番目の値で注文したい場合は
list.Sort((x, y) => y.Item1.CompareTo(x.Item1));
、それは少しトリッキーが、それでも可能となります。例:
list.Sort((x, y) => {
int result = y.Item1.CompareTo(x.Item1));
return result == 0 ? y.Item2.CompareTo(x.Item2) : result;
});
編集:これで、降順で並べ替えるようになりました。これを行う正しい方法は、比較の順序を逆にすることです(yをxからyの代わりにxに)。あなたはないだけCompareTo
の戻り値を否定しなければならない - CompareTo
がint.MinValue
を返すとき、これは失敗します。それはインプレースの並べ替えではないかもしれないので、
これはなぜですか?
List<Tuple<int, int>> list = ...
list = list.OrderBy(i => i.Item1).ToList();
はい、それは新しいリストを作成しますが、私は興味があります - これはどうですか?
List<Tuple<int, int>> list = new List<Tuple<int, int>>
{
new Tuple<int,int>(1,1),
new Tuple<int,int>(0,2),
new Tuple<int,int>(3,0)
};
list.Sort(Comparer<Tuple<int, int>>.Default);
生成:
0,2
1,1
3,0
をそして、それはその場でだ、そうではありませんか?
? –
@Martinho:はい、そうではありません。私は私の質問をより明確にするために投稿を編集しました。 – abatishchev
'Tuple
は、あなたがList<T>.Sort
方法を見たことがありますか?あなただけList<T>.Sort
方法にIComparer<Tuple<int, int>>
またはComparison<Tuple<int, int>>
を提供する必要が
list.Sort((x,y)=> x.Item1.CompareTo(y.Item1));
var listSort = from element in list orderby element.Item1 element.Item2 select element;
- 1. 一覧<T>
- 2. 一覧<Type>
- 3. C#一覧<>
- 4. 一覧<SelectListItem>()()
- 5. 一覧<XElement>と一覧<String>
- 6. デシリアライズ一覧<string><object>
- 7. 一覧</p> <p>0 ..を
- 8. 充填一覧は<タプルLINQ
- 9. 一覧<string>は、C#
- 10. C#一覧<>インデックスが
- 11. グループ別一覧<Item>
- 12. HtmlEncode一覧<string>値
- 13. フラグメントレイアウト一覧<-->詳細
- 14. タプルの要素による並べ替え<int、Tuple <int、int、int、int、string、int >>
- 15. カスタムコンパレータ<int型、ペア<int, int>>
- 16. タプル<int, int>とint [2]のメモリ使用
- 17. 移入のEntitySet一覧から<int>
- 18. のJava API - JSONエラーに一覧<int[]>
- 19. ベクトル<int> v(istream_iterator <int>(cin)、istream_iterator <int>());
- 20. 値を基に辞書<string、List <int>>をソート
- 21. <Int> == <String>
- 22. リスト内の変数の一覧<string>をゲット<T>
- 23. リスト一覧<?
- 24. メモリ効率の良いマップ<pair <int,int>、set <int>>代替
- 25. ベクトル<pair <int、pair <int,int> >> Pythonのデータ構造
- 26. 一覧<object> .Contains式ツリー
- 27. Linqグループ別一覧<Object> sum
- 28. AndroidのOpenCVの一覧<KeyPoint>
- 29. のFuncと一覧<string>
- 30. 一覧<Base> ...条件キャスト
は昇順でソートされていませんか? – BobTurbo
@BobTurbo:まあまあです。修正されます。 –
参照元タプルには、Item1とItem2で比較されるデフォルトの比較があります。 http://referencesource.microsoft.com/#mscorlib/system/tuplecs、189 – ShitalShah