C# 使用键和值数组初始化字典

C# 使用键和值数组初始化字典,c#,dictionary,C#,Dictionary,我想用键和值数组初始化字典,如下所示: int[] keys = {1, 2, 3}; string[] values = {"a", "b", "c"}; Dictionary<int, string> dict = new Dictionary<int, string>(keys, values); int[]键={1,2,3}; 字符串[]值={“a”、“b”、“c”}; Dictionary dict=新字典(键、值); 是否有一种不迭代数组的快速方法,如:

我想用键和值数组初始化字典,如下所示:

int[] keys = {1, 2, 3};
string[] values = {"a", "b", "c"};
Dictionary<int, string> dict = new Dictionary<int, string>(keys, values);
int[]键={1,2,3};
字符串[]值={“a”、“b”、“c”};
Dictionary dict=新字典(键、值);
是否有一种不迭代数组的快速方法,如:

for (int i = 0; i < keys.Length; ++i)
{
    dict.Add(keys[i], values[i]);
}
for(int i=0;i
编辑:有人将此问题标记为一个问题的副本,但它们是不相关的,因为该问题的目的不是将“键-值”集合转换为字典,而是将对象列表(每个对象包含一个键和一个值列表)转换为字典

使用
Zip()

它不会更快,而且据我所知,它实际上可能会慢一点,尽管可能还不够重要

for
循环相比,它有一个明显的优势,即
Zip()
不会在
values.Length
时引发异常


一次,您就可以保存几个字符:

var dict = keys.Zip(values, (num, str) => (num: num, str: str))
           .ToDictionary(ns => ns.num, ns => ns.str);
使用
Zip()

它不会更快,而且据我所知,它实际上可能会慢一点,尽管可能还不够重要

for
循环相比,它有一个明显的优势,即
Zip()
不会在
values.Length
时引发异常


一次,您就可以保存几个字符:

var dict = keys.Zip(values, (num, str) => (num: num, str: str))
           .ToDictionary(ns => ns.num, ns => ns.str);

复杂度的下限是O(n),所以你无论如何都要迭代。复杂度的下限是O(n),所以你无论如何都要迭代。