c# - 根据C#中字符串值的长度对字典进行排序

标签 c# dictionary sql-order-by

假设我有一个这样的字典

dict1 = {{[4,bcefgh]},{[5,abcefgh]},{[6,efgh]},{[7,bcefgh]},{[10,cefghi]}}

我想根据字符串值的长度对这个字典中的对进行排序,而不使用额外的循环。也就是说,结果应该是:

dict1 = {{[6,efgh]},{[4,bcefgh]},{[7,bcefgh]},{[10,cefghi]},{[5,abcefgh]}}

我最初的答案是创建一个单独的字典,它具有相同的键和每个对应字符串的长度,以及第三个字典,它循环 pair 如下:

foreach (KeyValuePair<int,string> pair  in dict1)
{
    temp_dict.Add(pair.Key, pair.Value.Count());
}

var items = from pair in temp_dict
        orderby pair.Value ascending
            select pair;

foreach (KeyValuePair<int, int> pair in items)
{
    result_dict.Add(pair.Key, dict1[pair.Key]);
}

但这个结果现在适用于大量数据。

最佳答案

您不能指望字典被排序。相反,您可以使用 SortedDictionary<string, string>并将自定义的 IComparer<T> 传递给它的构造函数.

关于c# - 根据C#中字符串值的长度对字典进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25654401/

相关文章:

oracle - 带有 ORDER BY NULL 的 LISTAGG 实际上用作订单标准是什么?

mysql - 根据日期和时间按日期时间排序

c# - 当鼠标经过标签并随后恢复正常时,如何使标签变粗

c# - IPC——消息队列

c# - 使用文件名检查目录中文件是否存在的快速方法

python - 在python中使用__getitem__迭代字典

Mysql ORDER BY 查询中的条件取决于日期

c# - 为什么属性中的异步/等待方法永远不会返回

python字典连接成对差异在一定距离内的连续键的值

c# - 灵活使用 IDictionary(带接口(interface))