どのように私は順序を決定する値としてタプルの最初の要素を使用して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. 一覧<Type>
- 2. 一覧<T>
- 3. グループ別一覧<Item>
- 4. フラグメントレイアウト一覧<-->詳細
- 5. HtmlEncode一覧<string>値
- 6. タプル<int, int>とint [2]のメモリ使用
- 7. カスタムコンパレータ<int型、ペア<int, int>>
- 8. 移入のEntitySet一覧から<int>
- 9. ベクトル<int> v(istream_iterator <int>(cin)、istream_iterator <int>());
- 10. <Int> == <String>
- 11. 一覧+ =タプル=リスト+タプル
- 12. リスト内の変数の一覧<string>をゲット<T>
- 13. リスト一覧<?
- 14. WCF一覧<string >シリアライズ/デシリアライズエラー
- 15. 一覧<object> .Contains式ツリー
- 16. バイト[]一覧から<Byte>
- 17. Linqグループ別一覧<Object> sum
- 18. AndroidのOpenCVの一覧<KeyPoint>
- 19. のFuncと一覧<string>
- 20. CORDBG_E_CLASS_NOT_LOADED(HRESULT:0x80131303)一覧<double>
- 21. 一覧私は<code>ls</code>ため<code>man</code>ページを読んだ
- 22. リスト<int>からIEnumerable <IComparable>
- 23. ペア<int,int>ペア
- 24. は 'System.Collections.Generic.IEnumerable <int?>'
- 25. ASP.NETハッシュリスト<int>
- 26. unique_ptr <int[]>またはベクター<int>?
- 27. 「マージ(のstd ::ベクトル<int>&、のstd ::ベクトル<int>&)
- 28. unorderered_set <tuple <int,int>>の方法は?
- 29. )(<KeyValuePair <ドキュメント、ファイル>>一覧に階層辞書を変換し
- 30. のjava:<SomeInterface>リストに一覧<SomeClass>から変換工assがSomeInterface
は昇順でソートされていませんか? – BobTurbo
@BobTurbo:まあまあです。修正されます。 –
参照元タプルには、Item1とItem2で比較されるデフォルトの比較があります。 http://referencesource.microsoft.com/#mscorlib/system/tuplecs、189 – ShitalShah