如何将成对List<double>分组存入List<List<double>>集合中
你之前直接逐个Add的写法是把所有X、Y序列都直接添加到了外层List,没有做分组,所以达不到成对存储的效果。Tuple报错是因为Add方法需要传入Tuple实例,不能直接传两个独立参数。
方案1:严格按要求使用List<List<double>>实现
如果必须使用List<List<double>>类型存储,需要做两层嵌套,外层List的每个元素是一个长度为2的集合,分别存储对应组的X、Y序列,实现代码如下:
List<List<double>> listlistdXYSignals = new List<List<double>>(); // 添加第一组XY listlistdXYSignals.Add(new List<double> { listdSignal0X, listdSignal0Y }); // 添加第二组XY listlistdXYSignals.Add(new List<double> { listdSignal1X, listdSignal1Y }); // 添加第三组XY listlistdXYSignals.Add(new List<double> { listdSignal2X, listdSignal2Y });
取值规则:
listlistdXYSignals[0][0]对应listdSignal0XlistlistdXYSignals[0][1]对应listdSignal0Y- 以此类推即可按组索引获取对应的XY序列
方案2:更易维护的元组实现(推荐)
这种方式不需要处理嵌套索引,可读性更高,适合后续WPF图表绑定场景。
旧版Tuple兼容写法
List<Tuple<List<double>, List<double>>> listtupledSignals = new List<Tuple<List<double>, List<double>>>(); listtupledSignals.Add(Tuple.Create(listdSignal0X, listdSignal0Y)); listtupledSignals.Add(Tuple.Create(listdSignal1X, listdSignal1Y)); listtupledSignals.Add(Tuple.Create(listdSignal2X, listdSignal2Y));
取值方式:listtupledSignals[0].Item1为X序列,listtupledSignals[0].Item2为Y序列
C# 7.0+ 值元组写法(可读性最优)
// 定义带命名属性的元组集合 List<(List<double> X, List<double> Y)> signalGroups = new List<(List<double> X, List<double> Y)>(); signalGroups.Add((listdSignal0X, listdSignal0Y)); signalGroups.Add((listdSignal1X, listdSignal1Y)); signalGroups.Add((listdSignal2X, listdSignal2Y));
取值方式:直接通过命名属性获取,比如signalGroups[0].X、signalGroups[0].Y,不需要记忆序号对应关系。
内容的提问来源于stack exchange,提问作者ttom
相关产品推荐
相关产品推荐

