0
私はキーとして文字列の辞書を持っており、値として整数リストのリストを持っています。それは、C#の値の順序に基づいて順序付けることが可能ですか?例えば値を基に辞書<string、List <int>>をソート
: myDict:
{
"hp",<10,14,23>
"dell", <6,8,9,10>
"asus", <6,9,18>
"mac", <7,98>
}
としてソート:ここ
{
"dell", <6,8,9,10>
"asus", <6,9,18>
"mac", <7,98>
"hp",<10,14,23>
}
は、私が試したものです:
//this creates a dictionary with requirements stated above for testing
Dictionary<string, List<int>> myDict = new Dictionary<string, List<int>
>();
var numbers = "8,13,16,21,24,25,31,33,36,63,66,70,76,82,94".Split(',').Select(Int32.Parse).ToList();
myDict .Add("asus", numbers);
numbers = "6,84,90,99".Split(',').Select(Int32.Parse).ToList();
myDict .Add("dell", numbers);
numbers = "10,11,20,21,23,26,28,29,31,38,39,40,50,52,61,65,66,70,75,94".Split(',').Select(Int32.Parse).ToList();
myDict.Add("hp", numbers);
numbers = "4,17,42,56,62,79,80".Split(',').Select(Int32.Parse).ToList();
myDict .Add("mac",numbers);
行うこととしている部分並べ替え:
var orderedDictionary = myDict.OrderByDescending(pairs => pairs.Value);
上記は「少なくとも1つのオブジェクトがIComparableを実装する必要があります」というエラーを示しています。 は、私はまた、文字列にリストを変換し、次の操作を行って試してみました:
var sortedDict = from entry in myDict
orderby entry.Value
ascending
select entry;
上記は、しかし、それは文字列として数字を扱います働きました。したがって、10,85は、の前に表示されます。8,6 "、" ASCII表現が数字よりも高いためですと推測しています。
ソートされた整数リストの辞書をC#でソートするにはどうすればよいですか?他のセルより各セルをチェックして手動ソートを行う唯一の方法はありますか?
マイナーチェンジで働きました。 .lengthの代わりに.countを使用しました。リストにはlengthメソッドがないためです。 – ibininja
あなたは絶対に正しいです、私の答えを修正しました。 – YuvShap