如何将嵌套字典展平为一些对象的列表(在下面的示例中为SomeObject
),这些对象应该包含那些字典的键?
例如:假如我们有以下类型的字典
var nestedDictionary = new Dictionary<int, Dictionary<int, string>>();
那么,让我们来创建这个类
public class SomeObject
{
public int var1;
public int var2;
public string someStringVar;
}
如何将 nestedDictionary
转换为一个列表 List<SomeObject>
,其中 var1
是外层字典的键,var2
是内部字典的键,someStringVar
是内部字典的字符串值?
本质上,我该如何转移这个:
nestedDict[0][0] = "foo";
nestedDict[0][1] = "bar";
nestedDict[0][2] = "foo1";
nestedDict[1][0] = "bar1";
nestedDict[1][1] = "foo2";
nestedDict[1][2] = "bar2";
转化为以下内容(用伪C#表示只是为了可视化)
objList[0] = SomeObject { var1 = 0, var2 = 0, someStringVar = "foo" }
objList[1] = SomeObject { var1 = 0, var2 = 1, someStringVar = "bar" }
objList[2] = SomeObject { var1 = 0, var2 = 2, someStringVar = "foo1" }
objList[3] = SomeObject { var1 = 1, var2 = 0, someStringVar = "bar1" }
objList[4] = SomeObject { var1 = 1, var2 = 1, someStringVar = "foo2" }
objList[5] = SomeObject { var1 = 1, var2 = 2, someStringVar = "bar2" }
使用 LINQ?
SelectMany
是我倾向于使用查询语法(如果可能的话),不知道为什么。如果格式化得很好,方法语法在 C# 中也同样易读(不像 VB)。 - Tim SchmelterToList()
调用(出于某种原因,我不喜欢将查询语法与最终方法调用混合使用)。 - Frédéric Hamidi