填充具有嵌套列表作为值的词典的正确语法是什么?

时间:2016-03-04 01:19:23

标签: c# list generics dictionary

我是C#的新手,我正在尝试定义一个包含以下内容的词典:

作为关键:

  

一个字符串


作为价值:

  

字符串列表。


我能想出什么(不完全确定它是对的?)是这样的:

var peopleWithManyAddresses = new Dictionary<string, List<List<string>>> {};


现在,如果以上是正确的,我想知道如何填充{em>一个项peopleWithManyAddresses

Intellisense告诉我,以下内容只有在#&#34; Lucas&#34;:

之前才是正确的
peopleWithManyAddresses.Add("Lucas", { {"first", "address"}, {"second", "address"} });

它的正确语法是什么?

P.S。我知道我可以上课,但出于学习目的,我现在想这样做。

3 个答案:

答案 0 :(得分:4)

要初始化List<List<string>>对象,必须使用new List<List<string>> { ... }语法。要初始化每个子列表,您必须使用类似的语法,即new List<string> {... }。这是一个例子:

var peopleWithManyAddresses = new Dictionary<string, List<List<string>>>();

peopleWithManyAddresses.Add("Lucas", new List<List<string>>
{
    new List<string> { "first", "address" },
    new List<string> { "second", "address" }
});

答案 1 :(得分:3)

您的初始化声明是正确的。

使用C#6.0,您可以使用以下语法填充一个项目:

var dict = new Dictionary<string, List<List<string>>>
{
    ["Lucas"] = new[]
    {
        new[] { "first", "address" }.ToList(),
        new[] { "second", "address" }.ToList(),
    }.ToList()
};

您可以使用以下内容填充两个项目:

var dict = new Dictionary<string, List<List<string>>>
{
    ["Lucas"] = new[]
    {
        new[] { "first", "address" }.ToList(),
        new[] { "second", "address" }.ToList(),
    }.ToList(),
    ["Dan"] = new[]
    {
        new[] { "third", "phone" }.ToList(),
        new[] { "fourth", "phene" }.ToList(),
    }.ToList(),
};

如果您想稍后添加更多数据,可以执行以下操作:

dict["Bob"] = new[]
{
    new[] { "fifth", "mailing" }.ToList(),
    new[] { "sixth", "mailing" }.ToList(),
}.ToList();

答案 2 :(得分:1)

首先我创建与List分开的Dictionary

List<string> someList = new List<string<();
var otherList = new List<List<string>>();
var peopleWithManyAddresses = new Dictionary<string, List<List<string>>> {};

首先在someList

中添加字符串
someList.Add("first");
someList.Add("addresss");

然后在otherList中添加:

otherList.Add(someList);

现在创建新的字符串列表:

var thirdList = new List<string>();
thirdList.Add("second");
thirdList.Add("addresss");

并在其他列表中添加最后一个字符串列表并添加到字典中

otherList.Add(thirdList);
peopleWithManyAddresses.Add("Lucas", otherList);