【发布时间】:2021-12-05 10:36:59
【问题描述】:
我有一个由一个 ID 和两个数组组成的“Compact”对象:
public class Compact
{
public int Id { get; set; }
public int[] Number { get; set; }
public double[] Value { get; set; }
public Compact(int id, int[] number, double[] value)
{
Id = id;
Number = number;
Value = value;
}
}
Compact 对象的列表可以这样初始化:
List<Compact> c = new List<Compact>
{
new Compact(1, new int[] { 1, 2, 3 }, new double[] { 0.05, 0.02, 0.03 }),
new Compact(2, new int[] { 1, 2, 3 }, new double[] { 0.07, 0.01, 0.04 }),
new Compact(3, new int[] { 1, 2, 3 }, new double[] { 0.02, 0.025, 0.05 })
};
我正在寻找一种优雅的方式来将此对象展平为“展平”对象:
public class Flattened
{
public int Id { get; set; }
public int Number { get; set; }
public double Value { get; set; }
public Flattened(int id, int number, double value)
{
Id = id;
Number = number;
Value = value;
}
}
展平的结果将对应于:
List<Flattened> f = new List<Flattened>
{
new Flattened(1,1,0.05),
new Flattened(1,2,0.02),
new Flattened(1,3,0.03),
new Flattened(2,1,0.07),
new Flattened(2,2,0.01),
new Flattened(2,3,0.04),
new Flattened(3,1,0.02),
new Flattened(3,2,0.025),
new Flattened(3,3,0.05)
};
我可以使用循环进行展平,但我想知道在性能方面是否有更合适的方法,例如 Linq 操作或不同的集合类型?
【问题讨论】: