Reputation: 3140
Does anyone know if there is a way I can insert values into a C# Dictionary when I create it? I can, but don't want to, do
dict.Add(int, "string")
for each item if there is something more efficient like:
Dictionary<int, string>(){(0, "string"),(1,"string2"),(2,"string3")};
Upvotes: 160
Views: 91191
Reputation: 273179
You were almost there:
var dict = new Dictionary<int, string>()
{
{0, "string"},
{1, "string2"},
{2, "string3"}
};
Upvotes: 15
Reputation: 32207
This isn't generally recommended but in times of uncertain crises you can use
Dictionary<string, object> jsonMock = new Dictionary<string, object>() { { "object a", objA }, { "object b", objB } };
// example of unserializing
ClassForObjectA anotherObjA = null;
if(jsonMock.Contains("object a")) {
anotherObjA = (ClassForObjA)jsonMock["object a"];
}
Upvotes: -2
Reputation: 462
Just so you know as of C# 6 you can now initialize it as follows
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}
};
Much cleaner :)
Upvotes: 9
Reputation:
Hope it will work perfectly.
Dictionary<string, double> D =new Dictionary<string, double>();
D.Add("String", 17.00);
Upvotes: -1
Reputation: 116654
There's whole page about how to do that here:
http://msdn.microsoft.com/en-us/library/bb531208.aspx
Example:
In the following code example, a
Dictionary<TKey, TValue>
is initialized with instances of typeStudentName
:
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}}
};
Upvotes: 219
Reputation: 763
You can also use Lambda expressions to insert any Key Value pairs from any other IEnumerable object. Key and value can be any type you want.
Dictionary<int, string> newDictionary =
SomeList.ToDictionary(k => k.ID, v => v.Name);
I find that much simpler since you use the IEnumerable objects everywhere in .NET
Hope that helps!!!
Tad.
Upvotes: 11
Reputation: 25513
You can instantiate a dictionary and add items into it like this:
var dictionary = new Dictionary<int, string>
{
{0, "string"},
{1, "string2"},
{2, "string3"}
};
Upvotes: 7
Reputation: 15785
Dictionary<int, string> dictionary = new Dictionary<int, string> {
{ 0, "string" },
{ 1, "string2" },
{ 2, "string3" } };
Upvotes: 50