この辞書を使用してオブジェクトのリスト(ツリー構造)をソートしようとしています。辞書の対応するIDに従ってオブジェクトリストをソート
Dictionary<Tuple<int, int>, int?>
タプルには、固有のオブジェクトを識別する2つのIDが含まれています。値はソート順です。
オブジェクトは、私は上記辞書に従って
List<DmsSortOrder>
をソートする必要
public class DmsSortOrder : IRecord
{
public int TagID { get; set; }
public int ObjectID { get; set; }
public int? Order { get; set; }
}
と同様の構造を有しています。
Dictionary<Tuple<tagID, objectID>, sortOrder>()
辞書の値に従ってオブジェクトのリストをソートする必要がありますが、わかりません。それが重要であれば、リストは実際にリストのリストですが、ひとつのブランチをソートすることができれば、リスト全体をソートするために再帰を使用するのが快適です。
ご協力いただければ幸いです。私はこれを最適化する方法の多くが、一般的な考え方が確信している
var sortedList = list.OrderBy(obj => sortOrders[new Tuple(obj.Id1, obj.Id2)]).ToList();
:
List<UniqueObject> list;
Dictionary<Tuple<int, int>, int?> sortOrders;
あなたはこのようなもので終わる必要があります。これらの変数を考慮する
は単に 'SortedDictionary'は、この問題を解決する使用しますか? –
@ stephen.vakil私はそうは思わない..私の元の質問は不明か、それとも人々をあまりにも早くスキャンしているのだろうか? –
クラスのIComparableを辞書で継承し、独自のCompareTo()メソッドを追加して並べ替えることができます。 – jdweng