1

我们可以有类似的东西 -

Dictionary<string, string> dict = new Dictionary<string, string>();

List<string> keysList=  new List<string>();
List<string>valuesList=  new List<string>();

//Assuming both the list have the same number of items
dict.keys = keysList;
dict.values = valuesList;

大多数情况下,我想知道是否有办法通过直接将键和值分配给列表来填充它们?

4

2 回答 2

5

大多数情况下,我想知道是否有办法通过直接将键和值分配给列表来填充它们?

不,但只需压缩它们,然后使用ToDictionary

var dict = keysList.Zip(valuesList, (key, value) => Tuple.Create(key, value))
                   .ToDictionary(pair => pair.Item1, pair => pair.Item2);
于 2012-05-09T20:19:06.517 回答
1

字典内部不会将数据存储为两个列表。它将数据存储在哈希表中,这意味着它需要获取每个键,为其生成哈希,然后将项目放置在与该哈希对应的位置。因此,添加一组项目的唯一方法就是遍历该组并添加每个项目。您可以使用 LINQToDictionary方法,如另一个答案中所述,但在内部它要做的就是遍历每个项目并将其添加到字典中。这可以防止您看到循环,但循环仍然存在。

于 2012-05-09T20:23:44.747 回答