You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用ToDictionary()替代For Each将列表转为带唯一编号键的字典

用ToDictionary()实现带索引编号的字典转换

首先修正你原代码里的一个小错误:声明stringDict时泛型类型写错了,应该是Dictionary(Of String, String)而非Dictionary(Of Integer, String),因为你的键是字符串格式的"Entry{编号}"。

要在ToDictionary()里获取元素的索引来生成键,需要借助Enumerable.Select的重载版本——它会同时返回元素本身和对应的索引(从0开始计数),之后再通过ToDictionary()转换即可。

完整实现代码

' 初始化字符串列表
Dim stringList As List(Of String) = {"alpha", "beta", "gamma", "delta"}.ToList()

' 通过Select带索引+ToDictionary生成目标字典
Dim stringDict As Dictionary(Of String, String) = stringList _
    .Select(Function(item, index) New With {.Value = item, .Index = index}) _
    .ToDictionary(Function(x) $"Entry{x.Index + 1}", Function(x) x.Value)

代码说明

  • Select(Function(item, index) ...):这里的index是当前元素在列表中的索引(从0开始),我们把元素和索引打包成匿名类型。
  • ToDictionary的第一个参数是键生成逻辑:x.Index + 1把索引转成从1开始的编号,拼接成"Entry1"、"Entry2"这类格式;第二个参数直接取元素值作为字典的值。

这样生成的字典和你用For Each循环实现的结果完全一致。

内容的提问来源于stack exchange,提问作者Ken Thompson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 16:36:18