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
代码说明
Zip方法将headers和recordData中对应位置的元素配对,生成包含h(键)和r(值)的匿名类型序列。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
相关产品推荐
相关产品推荐

