当前位置: 首页 > news >正文

C# Dictionary 转换成 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(){// 定义一个DictionaryDictionary<string, int> dict = new Dictionary<string, int>{{"苹果", 5},{"香蕉", 3},{"橙子", 7}};// 转换为包含键值对的ListList<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(但如果是引用类型,修改内部属性会同步)。

http://www.dtcms.com/a/606197.html

相关文章:

  • 网站开发费用属于什么科目关于合肥的网站好
  • 邦策网站建设平台eyoucms插件
  • RAGFlow 0.22.0 特性总览——支持数据源、完善 Parser、Agent 优化以及 Admin UI
  • 攻防世界-Misc-2017_Dating_in_Singapore
  • STM32连接以太网失败自动重新连接
  • python 基础学习socket -UDP编程
  • Dw做html网站百度首页纯净版怎么设置
  • 【FPGA+DSP系列】——PWM电平光耦转换电路实验分析----电路原理分析,器件选型
  • 北京网站开发培训赚钱软件一天赚100元游戏无广告
  • Uart 不定长收发的 DMA 方案
  • 普宁市建设局网站金石文化规划 设计 开发风景区网站建设
  • 沈阳优化网站关键词wordpress 4.8正式版
  • 如何做切片网站广告设计公司vi
  • thinkPHP6.1使用PhpMqtt进行MQTT消息订阅和发布,并将订阅的消息入库保存,可控制超时退出订阅
  • 做网站作业什么主题商机网wordpress模板
  • Xcode的App Thinning Size Report分析包体积
  • 多机多卡训练指南
  • 深入浅出:进程和线程的区别与联系
  • 做一个静态网站需要多少钱关键词
  • 西安网站建设方案外包浏览器网页版打开网页
  • 【Redis】 SpringBoot集成Redis
  • 网易企业邮箱邮箱登录入口江西网站建设优化服务
  • 汕头吧 百度贴吧超级优化小说
  • 视觉学习篇——机器学习模型评价指标
  • Java Agent 和字节码注入技术原理和实现
  • Java后端常用技术选型 |(五)可视化工具篇
  • 【数据库】Apache IoTDB数据库在大数据场景下的时序数据模型与建模方案
  • 网站建设系统课程广东建设网 四川是什么网站
  • 不止于 API 调用:解锁 Java 工具类设计的三重境界 —— 可复用性、线程安全与性能优化
  • 数据结构与算法:树(Tree)精讲