使用C#创建IEnumerable<KeyValuePair<string, string>> 对象?

32

为了测试目的,我需要创建一个包含以下示例键值对的 IEnumerable<KeyValuePair<string, string>> 对象:

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

最简单的方法是什么?


你想从哪个数据源创建 IEnumerable<KeyValuePair<T1,T2>> - Jahan Zinedine
初始数据结构不是问题。您可以使用任何数据源。唯一的要求是拥有一个包含上述键值对的IEnumerable :) - Chathuranga Chandrasekara
5个回答

64

任意一个:

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

或者:

values = (new[] {
      new {Key = "Name", Value = "John"},
      new {Key = "City", Value = "NY"}
   }).ToDictionary(x => x.Key, x => x.Value);

8

Dictionary<string, string>实现了IEnumerable<KeyValuePair<string,string>>接口。


7
var List = new List<KeyValuePair<String, String>> { 
  new KeyValuePair<String, String>("Name", "John"), 
  new KeyValuePair<String, String>("City" , "NY")
 };

2
使用 KeyValuePair<string, string>[] 可能比使用 List<KeyValuePair<string, string>> 更有效率。 - cdhowie

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

这是你的意思吗,还是有更多内容?


1
您可以将 Dictionary<K, V> 直接赋给 IEnumerable<KeyValuePair<K, V>>
IEnumerable<KeyValuePair<string, string>> kvp = new Dictionary<string, string>();

如果那不起作用,您可以尝试:
IDictionary<string, string> dictionary = new Dictionary<string, string>();
            IEnumerable<KeyValuePair<string, string>> kvp = dictionary.Select((pair) => pair);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接