C#将Dictionary转换成List的常见方式

 更新时间:2025年11月14日 09:35:36   作者:猿来是你_L  
在 C# 中,将Dictionary<TKey, TValue>转换为List的方式取决于你需要List中存储的内容(键、值、键值对,或自定义类型),本文给大家介绍了常见的转换方式,需要的朋友可以参考下

在 C# 中,将Dictionary<TKey, TValue>转换为List的方式取决于你需要List中存储的内容(键、值、键值对,或自定义类型)。以下是常见的转换方式:

1. 转换为包含键值对的List<KeyValuePair<TKey, TValue>>

Dictionary<TKey, TValue>本身实现了IEnumerable<KeyValuePair<TKey, TValue>>接口,可直接通过 LINQ 的ToList()方法转换为包含所有键值对的List。

示例代码:

using System;
using System.Collections.Generic;
using System.Linq; // 需引用此命名空间以使用ToList()

class Program
{
    static void Main()
    {
        // 定义一个Dictionary
        Dictionary<string, int> dict = new Dictionary<string, int>
        {
            {"苹果", 5},
            {"香蕉", 3},
            {"橙子", 7}
        };

        // 转换为包含键值对的List
        List<KeyValuePair<string, int>> kvpList = dict.ToList();

        // 遍历结果
        foreach (var item in kvpList)
        {
            Console.WriteLine($"键:{item.Key},值:{item.Value}");
        }
    }
}

2. 转换为仅包含键的List

通过Dictionary的Keys属性(返回所有键的集合),再调用ToList()转换为键的List。

示例代码:

// 转换为仅包含键的List
List<string> keysList = dict.Keys.ToList();

// 遍历键
foreach (var key in keysList)
{
    Console.WriteLine("键:" + key); // 输出:苹果、香蕉、橙子
}

3. 转换为仅包含值的List

通过Dictionary的Values属性(返回所有值的集合),再调用ToList()转换为值的List。

示例代码:

// 转换为仅包含值的List
List<int> valuesList = dict.Values.ToList();

// 遍历值
foreach (var value in valuesList)
{
    Console.WriteLine("值:" + value); // 输出:5、3、7
}

4. 转换为自定义类型的List

如果需要将键和值封装到自定义类中,可通过Select投影后再转换为List。

示例代码:

// 定义自定义类
public class Fruit
{
    public string Name { get; set; } // 对应Dictionary的键
    public int Count { get; set; }  // 对应Dictionary的值
}

// 转换为自定义类型的List
List<Fruit> fruitList = dict.Select(kv => new Fruit
{
    Name = kv.Key,
    Count = kv.Value
}).ToList();

// 遍历自定义类型列表
foreach (var fruit in fruitList)
{
    Console.WriteLine($"水果:{fruit.Name},数量:{fruit.Count}");
}

注意事项

需引用System.Linq命名空间(using System.Linq;),否则ToList()方法无法使用。
转换后的List是原Dictionary中元素的副本(浅拷贝),修改List中的元素不会影响原Dictionary(但如果是引用类型,修改内部属性会同步)。

以上就是C#将Dictionary转换成List的常见方式的详细内容,更多关于C# Dictionary转换List的资料请关注脚本之家其它相关文章!

相关文章

  • C#通过第三方组件生成二维码(QR Code)和条形码(Bar Code)

    C#通过第三方组件生成二维码(QR Code)和条形码(Bar Code)

    用C#如何生成二维码,我们可以通过现有的第三方dll直接来实现,下面列出几种不同的生成方法
    2016-12-12
  • C#使用NPOI操作Excel工具类的实现

    C#使用NPOI操作Excel工具类的实现

    NPOI是POI项目的.NET迁移版本,使用NPOI可以在没有安装Office或者相应环境的机器上对Word或Excel文档进行读写操作,下面我们就来学习一下如何使用NPOI编写操作Excel的工具类吧
    2023-11-11
  • C#(int)中Convert、Parse、TryParse的区别

    C#(int)中Convert、Parse、TryParse的区别

    Convert.ToInt32、int.Parse(Int32.Parse)、int.TryParse、(int) 四者都可以解释为将类型转换为 int,那它们的区别是什么呢?
    2013-04-04
  • C# ListView双击Item事件

    C# ListView双击Item事件

    ListView没有Item的双击事件,只能通过变通的方法得到,以下是我的变通方法
    2009-09-09
  • Unity UGUI的ContentSizeFitter内容尺寸适应器组件使用示例

    Unity UGUI的ContentSizeFitter内容尺寸适应器组件使用示例

    这篇文章主要为大家介绍了Unity UGUI的ContentSizeFitter内容尺寸适应器组件使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • insert语句太长用StringBuilder优化一下

    insert语句太长用StringBuilder优化一下

    insert语句太长用StringBuilder优化一下,下面是示例代码,需要的朋友可以研究研究
    2014-07-07
  • C#文件分割的方法

    C#文件分割的方法

    这篇文章主要介绍了C#文件分割的方法,针对小于等于64M文件和大于64M文件两种情况分析了C#文件分割的实现技巧,需要的朋友可以参考下
    2015-07-07
  • 详解C# 不能用于文件名的字符

    详解C# 不能用于文件名的字符

    在 Windows 有一些字符是不能作为文件名,尝试重命名一个文件,输入/ 就可以看到windows 提示的不能作为文件名的字符,那么具体是包括哪些符号不能作为文件名呢?下面小编给大家介绍下
    2018-02-02
  • C# webApi创建与发布、部署、api调用详细教程

    C# webApi创建与发布、部署、api调用详细教程

    这篇文章主要给大家介绍了关于C# webApi创建与发布、部署、api调用的相关资料,WebApi是微软在VS2012 MVC4版本中绑定发行的,WebApi是完全基于Restful标准的框架,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • String.Format大全(C# Java)

    String.Format大全(C# Java)

    String.format无论是在C#中还是在java中应用都非常广泛,今天小编抽个时间把有关string.format知识总结分享给大家,需要的朋友可以参考下
    2015-09-09

最新评论