[英]C# Dictionary Pivoting Linq
I've a Dictionary like this: 我有这样的字典:
Key | Value
C1 | 1
C2 | 2
C3 | 3
Now I need some linq statement or lambda expression (or other mechanism) to return new object like this: 现在,我需要一些linq语句或lambda表达式(或其他机制)以返回新对象,如下所示:
new { C1 = 1, C2 = 2, C3 = 3}.
The problem is that the keys' values are known only at runtime, as I know only at runtime how many properies my new anonimous object has and their names. 问题在于密钥的值仅在运行时才知道,因为我仅在运行时才知道我的新匿名对象有多少个属性及其名称。
Can anyone suggest me how reach my goal? 谁能建议我达到目标?
You can use a combination of an ExpandoObject and dynamic . 您可以结合使用ExpandoObject和dynamic 。
var data = new Dictionary<string, int> {
{ "C1", 1},
{ "C2", 2},
{ "C3", 3}
};
var expandoObject = new ExpandoObject() as IDictionary<string, Object>;
foreach (var kvp in data) {
expandoObject.Add(kvp.Key, kvp.Value);
}
dynamic pivotedData = expandoObject;
Console.WriteLine(pivotedData.C1);
Console.WriteLine(pivotedData.C2);
Console.WriteLine(pivotedData.C3);
Console.ReadLine();
This will yield: 这将产生:
1
2
3
You can probably make a nice extension method out of it. 您可能可以用它做一个不错的扩展方法。
这是不可能的。如果在编译时不知道结果对象的属性,就不能使用它,而不必跳过反射箍(使用字典会更容易)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.