C#将匿名类型解析为字符串值列表

Ale*_*der 3 c#

我有一个这样的数组object:

object[] internationalRates = new object[] 
{ 
new { name = "London", value = 1 }, 
new { name = "New York", value = 2 } , 
etc...
};
Run Code Online (Sandbox Code Playgroud)

我需要得到List<string>国家(或Dictionary<int, string>成对).我该如何施展它?

Gra*_*ICA 5

dynamic在这种情况下,您可以使用关键字:

var result = internationalRates.ToDictionary(
                                   x => ((dynamic)x).value,
                                   x => ((dynamic)x).name);
Run Code Online (Sandbox Code Playgroud)

这会生成一个带键/值对的Dictionary.

警告:

键和值都是类型dynamic,我不喜欢.如果您不注意原始类型,它可能会导致运行时异常.

例如,这工作正常:

string name = result[2];  // name == "New York"
Run Code Online (Sandbox Code Playgroud)

这也将编译得很好,但会抛出一个运行时异常:

int name = result[2];     // tries to convert string to int, doesn't work
Run Code Online (Sandbox Code Playgroud)