c#字典旋转Linq

本文关键字:Linq 旋转 字典 | 更新日期: 2023-09-27 18:08:59

我有一本这样的字典:

Key | Value
C1  | 1
C2  | 2
C3  | 3

现在我需要一些linq语句或lambda表达式(或其他机制)来返回像这样的新对象:

new { C1 = 1, C2 = 2, C3 = 3}.

问题是键的值只有在运行时才知道,因为我只有在运行时才知道我的新匿名对象有多少属性和它们的名称。

谁能告诉我如何达到我的目标?

c#字典旋转Linq

你可以同时使用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();

这将产生:

1
2
3

这是不可能的…如果在编译时不知道结果对象的属性,就不能使用结果对象,除非跳过反射环(使用字典会更容易)。