如何按关键字AND值对Dictionary(或类似Collection)进行排序
本文关键字:Collection 排序 关键字 何按 AND 值对 Dictionary | 更新日期: 2023-09-27 18:19:46
是否可以按值(降序)排列字典,当值相等时,按键(升序)排列字典?
示例:
无序:
(键,值)
C,8
B,8D,11
F、 8排序:
(键,值)
D,11
B,8
C,8A,5
在该示例中,键B、C、D具有相同的值。当我按值对字典排序时,这些键不会按升序排列。我该怎么做?我必须用字典以外的东西吗?
当您枚举一个Dictionary<TKey,TValue>
时,您会返回一堆KeyValuePair<TKey,TValue>
。。。特别是Dictionary<TKey,TValue>
是IEnumerable<KeyValuePair<TKey,TValue>>
,所以您可以在这个(无序的)序列上使用Linq:
var orderedKeyValuePairs =
myDic.OrderByDescending(kv => kv.Value).ThenBy(kv => kv.Key);
不要麻烦将排序后的值存储回Dictionary,因为Dictionary没有隐含的排序顺序。
Dictionary<T,U>
在内部是无序的。您可以通过LINQ以特定的顺序获取值,但是:
var ordered = theDictionary.OrderByDescending(kvp => kvp.Value).ThenBy(kvp => kvp.Key);
// To print your ordered list
foreach(var entry in ordered)
Console.WriteLine("{0}, {1}", entry.Key, entry.Value);