是否可以将KeyValuePair的IEnumerable<KeyValuePair<string,string>>
转换为匿名类型?将KeyValuePair集合转换为匿名类型
Dictionary<string, string> dict= new Dictionary<string, string>();
dict.add("first", "hello");
dict.add("second", "world");
var anonType = new{dict.Keys[0] = dict[0], dict.Keys[1] = dict[1]};
Console.WriteLine(anonType.first);
Console.WriteLine(anonType.second);
********************output*****************
hello
world
我想这样做的原因是因为我从检索表示对象并不在WSDL中存在的web服务的对象。返回的对象只包含一个KeyValuePair集合,其中包含自定义字段及其值。这些自定义字段可以命名为任何东西,所以我不能真正映射xml反序列化方法到我将要使用的最终对象(其属性必须绑定到网格)。
*仅仅因为我使用Dictionary<string,string>
并不意味着它绝对是一本字典,我只是用它来说明。真的是它的一个IEnumerable<KeyValuePair<string,string>>
我一直在尝试的方式来做到这一点,但我画了一个空白。这是C#.NET 4.0。
你想要动态类型,而不是匿名类型。所以你应该看看C#4的“动态”功能。 – CodesInChaos 2011-01-13 21:52:25
你说的(a)你不知道“第一”或“第二”真的会在那里,他们可能是任何东西,但(b)你想能够编写`anonType.first`和`anonType .second`? – 2011-01-13 21:53:42