【发布时间】:2019-05-20 16:58:57
【问题描述】:
我有一个 List<List<List<myClass>>> 的复杂 3D 结构,我希望它减少到 List<List<myClass>>。
public class MyClass
{
public string Key { get; set; }
public decimal Price { get; set; }
}
问题在于 MyClass 在原始 3D 列表中被复制,具有相同的键,例如:
(我在编写 3D 和 2D 多维数组时遇到了麻烦,所以我只是硬编码了一个示例。)
List<List<List<MyClass>>> level1 = new List<List<List<MyClass>>>();
List<List<MyClass>> level2_1 = new List<List<MyClass>>();
List<MyClass> level3_1 = new List<MyClass>()
{
new MyClass() { Key = "key1", Price = 10 }
new MyClass() { Key = "key2", Price = 20 }
};
level2_1.Add(level3_1);
List<List<MyClass>> level2_2 = new List<List<MyClass>>();
List<MyClass> level3_2 = new List<MyClass>()
{
new MyClass() { Key = "key2", Price = 10 }
new MyClass() { Key = "key3", Price = 20 }
};
level2_2.Add(level3_2);
我需要转换后的列表会是这样的:
List<List<MyClass>> level1 = new List<List<MyClass>>();
List<MyClass> level2_1 = new List<MyClass>()
{
new MyClass() { Key = "key1", Price = 10 }
}
List<MyClass> level2_2 = new List<MyClass>()
{
new MyClass() { Key = "key2", Price = 10 },
new MyClass() { Key = "key2", Price = 20 }
}
List<MyClass> level2_3 = new List<MyClass>()
{
new MyClass() { Key = "key3", Price = 20 }
}
level1.Add(level2_1);
level1.Add(level2_2);
level1.Add(level2_3);
因此主列表由Key 区分,子列表由其Prices 重复。
还有其他优雅的方式来实现这一点吗?也许是 linq?
【问题讨论】:
标签: c# list multidimensional-array