返回首页DA系统C#IDE文件同步服务屏保 今天是: 2026-05-05    "立夏"  夏季的第一个节气,表示盛夏时节的正式开始

搜索
热搜: linux 技术
Hi~登录注册
查看: 1962|回复: 0

[转载] 【转载】C# Dictionary字典排序详解

[复制链接]
发表于 2023-12-26 00:21:21 | 显示全部楼层 |阅读模式

少侠不来段修仙之旅吗~

您需要 登录 才可以下载或查看,没有帐号?注册成为修仙之旅的少年~

x
C# Dictionary字典排序详解


一、基础排序

Dictionary是C#中一种常用的集合类型,它的底层实现基于哈希表,可以实现O(1)时间复杂度的快速查找。在我们使用Dictionary存储数据时,有时需要将存储的数据按照一定的规则进行排序。C#中的Dictionary排序可以通过Linq的OrderBy方法来实现。以下是排序代码示例:

Dictionary<int, string> dict = new Dictionary<int, string>()
{
    {2, "b"},
    {1, "a"},
    {3, "c"}
};
var dictList = dict.OrderBy(d => d.Key).ToList();
foreach (var item in dictList)
{
    Console.WriteLine(item.Key + ":" + item.Value);
}

这段代码将字典按照键值升序进行排序并输出结果:
1:a
2:b
3:c


同理,我们也可以按照值进行排序:

var dictList = dict.OrderBy(d => d.Value).ToList();
foreach (var item in dictList)
{
    Console.WriteLine(item.Key + ":" + item.Value);
}

这段代码将字典按照值升序进行排序并输出结果:
1:a
2:b
3:c


二、自定义排序规则

有时我们需要根据自己的规则进行排序,这时我们可以使用实现IComparer接口的自定义比较器。以下是示例代码:

class CustomComparer : IComparer<KeyValuePair<int, string>>
{
    public int Compare(KeyValuePair<int, string> x, KeyValuePair<int, string> y)
    {
        return x.Value.CompareTo(y.Value);
    }
}

这个自定义比较器根据字典中键值对的值进行比较。
然后在排序的时候引入这个自定义比较器:

var dictList = dict.ToList();
dictList.Sort(new CustomComparer());
foreach (var item in dictList)
{
    Console.WriteLine(item.Key + ":" + item.Value);
}

这段代码将字典按照值升序进行排序并输出结果:
1:a
2:b
3:c


三、倒序排序

有时我们需要对字典进行倒序排序,这时我们可以使用Linq的OrderByDescending方法。以下是示例代码:

var dictList = dict.OrderByDescending(d => d.Value).ToList();
foreach (var item in dictList)
{
    Console.WriteLine(item.Key + ":" + item.Value);
}

这段代码将字典按照值降序进行排序并输出结果:

3:c
2:b
1:a


四、多字段排序

有时候我们需要根据多个字段对字典进行排序,这时我们可以使用Linq的ThenBy方法。以下是示例代码:

Dictionary<string, int> dict = new Dictionary<string, int>()
{
    {"a", 1},
    {"b", 2},
    {"c", 3},
    {"d", 2}
};
var dictList = dict.OrderBy(d => d.Value).ThenBy(d => d.Key).ToList();
foreach (var item in dictList)
{
    Console.WriteLine(item.Key + ":" + item.Value);
}

这段代码将字典先按照值进行升序排序,再按照键进行升序排序,输出结果如下:
a:1
b:2
d:2
c:3


五、结语
以上是C# Dictionary排序的一些基础介绍,基本的排序和自定义排序规则,倒序排序以及多字段排序。通过这些方法,我们可以充分利用C#语言的强大集合类,快速高效完成对数据的排序操作。



游客
回复
*滑块验证:

DA论坛飞机票来了~
快速回复 返回顶部 返回列表