具有多个排序条件的C#-排序字典
我有一本词频字典,需要先按频率排序,然后按字母顺序排序(如果多个单词有相同的词数,它们将按字母顺序排序,而不是按两个单独的顺序排序) 词典以单词为关键字,以频率为值 我怎样才能做到这一点具有多个排序条件的C#-排序字典,c#,visual-studio,dictionary,C#,Visual Studio,Dictionary,我有一本词频字典,需要先按频率排序,然后按字母顺序排序(如果多个单词有相同的词数,它们将按字母顺序排序,而不是按两个单独的顺序排序) 词典以单词为关键字,以频率为值 我怎样才能做到这一点 提前感谢假设您首先需要最常用的单词,然后: foreach(var pair in theData.OrderByDescending(x => x.Value).ThenBy(x => x.Key)) { Console.WriteLine($"{pair.Key}: {pair.Valu
提前感谢假设您首先需要最常用的单词,然后:
foreach(var pair in theData.OrderByDescending(x => x.Value).ThenBy(x => x.Key)) {
Console.WriteLine($"{pair.Key}: {pair.Value}");
}
假设您首先需要最常用的单词,然后:
foreach(var pair in theData.OrderByDescending(x => x.Value).ThenBy(x => x.Key)) {
Console.WriteLine($"{pair.Key}: {pair.Value}");
}
虽然字典不是有序集合,但如果您有字典以及如何从中获取有序集合,则可以使用LINQ轻松进行排序:
var ordered = values.OrderByDescending(_ => _.Value).ThenBy(_ => _.Key);
注意每次迭代
有序的IEnumerable
时,排序都会再次发生,因此根据使用情况,您可能需要添加ToList()
以获得具体的集合。虽然字典不是有序集合,但如果您有字典以及从中获得有序集合的内容,您可以使用LINQ轻松进行订购:
var ordered = values.OrderByDescending(_ => _.Value).ThenBy(_ => _.Key);
注意每次迭代排序的IEnumerable
时,排序都会重复,因此根据使用情况,您可能需要添加一个ToList()
,以拥有一个具体的集合。字典本质上是无序结构。如果您想订购,最好选择另一种结构。请出示示例字典。为什么要订字典?你试过什么?字典不是有序的集合。您可能希望改为使用..orderby().ThenBy()?字典本质上是无序结构。如果您想订购,最好选择另一种结构。请出示示例字典。为什么要订字典?你试过什么?字典不是有序的集合。您可能希望改为使用..orderby().ThenBy()?