2009-06-24 39 views
121

有谁知道是否有一种方法可以在创建C#字典时将值插入到C#字典中?我可以,但不想,对每个项目做 dict.Add(int, "string")如果有什么更有效,如:如何在实例化中向C#字典插入值?

Dictionary<int, string>(){(0, "string"),(1,"string2"),(2,"string3")}; 
+1

可能重复 entries?](http://stackoverflow.com/questions/495038/can-i-use-a-collection-initializer-for-dictionarytkey-tvalue-entries) – 2013-09-27 20:08:57

回答

152

有一个关于如何做整页,在这里:

http://msdn.microsoft.com/en-us/library/bb531208.aspx

示例:

在下面的代码示例中,Dictionary<TKey, TValue>是 已使用类型的实例初始化:

var students = new Dictionary<int, StudentName>() 
{ 
    { 111, new StudentName {FirstName="Sachin", LastName="Karnik", ID=211}}, 
    { 112, new StudentName {FirstName="Dina", LastName="Salimzianova", ID=317}}, 
    { 113, new StudentName {FirstName="Andy", LastName="Ruth", ID=198}} 
}; 
+0

对不起,我使用了错误的搜索条件谷歌显然。这个链接很棒。 – kd7iwp 2009-06-24 16:58:39

+3

这只适用于.NET 3.5编译器,不过......请记住这一点。 – 2009-06-24 16:59:00

44
Dictionary<int, string> dictionary = new Dictionary<int, string> { 
    { 0, "string" }, 
    { 1, "string2" }, 
    { 2, "string3" } }; 
6

可以实例一本字典,并添加项目到这样的:

var dictionary = new Dictionary<int, string> 
    { 
     {0, "string"}, 
     {1, "string2"}, 
     {2, "string3"} 
    }; 
11

你几乎有:

var dict = new Dictionary<int, string>() 
{ {0, "string"}, {1,"string2"},{2,"string3"}}; 
8

您还可以使用Lambda表达式,用于从任何其他IEnumerable对象插入任何Key Value对。键和值可以是任何你想要的类型。

Dictionary<int, string> newDictionary = 
       SomeList.ToDictionary(k => k.ID, v => v.Name); 

我发现,要简单得多,因为你在.NET

希望帮助任何地方使用了IEnumerable对象!

Tad。

0

希望它能很好地工作。

Dictionary<string, double> D =new Dictionary<string, double>(); D.Add("String", 17.00);

4

只要你知道作为C#6如下

var students = new Dictionary<int, StudentName>() 
{ 
    [111] = new StudentName {FirstName="Sachin", LastName="Karnik", ID=211}, 
    [112] = new StudentName {FirstName="Dina", LastName="Salimzianova", ID=317}, 
    [113] = new StudentName {FirstName="Andy", LastName="Ruth", ID=198} 
}; 

干净多了:)你现在可以初始化

的[我可以使用字典集合初始化