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

VB.NET(.NET 4.0)如何将两个等长列表映射为字典(非循环实现)

.NET 4.0 VB.NET:用Zip合并数组为Dictionary的正确实现

你的问题出在ToDictionary方法的参数上——只指定了键选择器,却没有指定值选择器,导致默认把Zip生成的整个匿名对象作为字典的值。要得到期望的键值对映射,需要同时传入两个选择器:

正确代码实现

Public Shared Sub Main()
    Dim headers As Object() = {"key1", "key2", "key3"}
    Dim recordData As Object() = {"value1", 2, "value3"}

    ' Zip配对后,明确指定字典的键(headers元素)和值(recordData元素)
    Dim ziperator = headers.Zip(recordData, 
        Function(h, r) New With {h, r}) _
        .ToDictionary(Function(x) x.h, Function(x) x.r)
End Sub

代码说明

  1. Zip方法将headers和recordData中对应位置的元素配对,生成包含h(键)和r(值)的匿名类型序列。
  2. ToDictionary的第一个参数Function(x) x.h指定字典的键来自配对后的h(即headers的元素);第二个参数Function(x) x.r指定字典的值来自配对后的r(即recordData的元素)。

运行后得到的ziperator即为期望的Dictionary(Of Object, Object):

{
    ["key1","value1"],
    ["key2", 2],
    ["key3","value3"]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 16:11:17