我如何将嵌套字典展平为一些对象列表(下例中的 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()并写下类似的内容:
var objList = nestedDictionary.SelectMany(
pair => pair.Value.Select(
innerPair => new SomeObject() {
var1 = pair.Key,
var2 = innerPair.Key,
someStringVar = innerPair.Value
})).ToList();
关于C# LINQ - 将嵌套字典转换为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11467957/