如何从字典中获取两个列表的元组,字典键已排序

本文关键字:字典 元组 列表 排序 两个 获取 | 更新日期: 2023-09-27 17:55:50

我有Dictionary<DateTime, double> dict;,我想创建Tuple<List<DateTime>, List<double>> result;

条件:生成的元组的结果result.Item1必须按升序排序,并且每个索引 n dict[result.Item1[n]] == result.Item2[n]

谢谢

如何从字典中获取两个列表的元组,字典键已排序

您可以使用此方法:

var kvList = dict.OrderBy(kv => kv.Key).ToList();
List<DateTime> dates = new List<DateTime>(kvList.Count);
dates.AddRange(kvList.Select(kv => kv.Key));
List<double> doubles = new List<double>(kvList.Count);
doubles.AddRange(kvList.Select(kv => kv.Value));
var result = Tuple.Create(dates, doubles);

我认为这应该有效:

List<DateTime> dateTimes = dict.Keys.OrderBy(x => x).ToList();
Tuple<List<DateTime>, List<double>> result = new Tuple<List<DateTime>, List<double>>(dateTimes, dateTimes.Select(x=>dict[x]).ToList());