2011-01-11 7 views
16

Zu Testzwecken Ich brauche ein IEnumerable<KeyValuePair<string, string>> Objekt mit den folgenden Beispielschlüsselwertepaare zu erstellen:Erstellen der IEnumerable <KeyValuePair <Zeichenfolge, Zeichenfolge >> Objekte mit C#?

Key = Name | Value : John 
Key = City | Value : NY 

Was der einfachste Ansatz, dies zu tun ist?

+0

Wollen Sie 'IEnumerable >' schaffen? aus welcher Datenquelle? –

+0

Die anfängliche Datenstruktur ist kein Problem. Sie können eine beliebige Datenquelle verwenden. Die einzige Voraussetzung ist ein IEnumerable mit obigen Schlüsselwertpaaren :) –

Antwort

41

Aktionen aus:

values = new Dictionary<string,string> { {"Name", "John"}, {"City", "NY"} }; 

oder

values = new [] { 
     new KeyValuePair<string,string>("Name","John"), 
     new KeyValuePair<string,string>("City","NY") 
    }; 

oder:

values = (new[] { 
     new {Key = "Name", Value = "John"}, 
     new {Key = "City", Value = "NY"} 
    }).ToDictionary(x => x.Key, x => x.Value); 
4
var List = new List<KeyValuePair<String, String>> { 
    new KeyValuePair<String, String>("Name", "John"), 
    new KeyValuePair<String, String>("City" , "NY") 
}; 
+1

Mit 'KeyValuePair []' wahrscheinlich effizienter als mit 'List >'. – cdhowie

8

Dictionary<string, string>IEnumerable<KeyValuePair<string,string>> implementiert.

1
Dictionary<string,string> testDict = new Dictionary<string,string>(2); 
testDict.Add("Name","John"); 
testDict.Add("City","NY"); 

Ist es das, was du meinst, oder gibt es mehr?

1

Sie können einfach zuordnen Dictionary<K, V> zu IEnumerable<KeyValuePair<K, V>>

IEnumerable<KeyValuePair<string, string>> kvp = new Dictionary<string, string>(); 

Wenn das nicht funktioniert, versuchen kann -

IDictionary<string, string> dictionary = new Dictionary<string, string>(); 
      IEnumerable<KeyValuePair<string, string>> kvp = dictionary.Select((pair) => pair); 
Verwandte Themen