C# 是否可以在分类列表下标<;日期时间,十进制[]>;按名称获取对象的值?
从CSV文件加载数据时,我为每行数据创建一个C# 是否可以在分类列表下标<;日期时间,十进制[]>;按名称获取对象的值?,c#,C#,从CSV文件加载数据时,我为每行数据创建一个DataPoint对象: public class DataPoint { public DateTime Date {get; set;} public Decimal Open {get; set;} public Decimal High {get; set;} public Decimal Low {get; set;} public Decimal Close {get; set;} } 然后我将每个
DataPoint
对象:
public class DataPoint
{
public DateTime Date {get; set;}
public Decimal Open {get; set;}
public Decimal High {get; set;}
public Decimal Low {get; set;}
public Decimal Close {get; set;}
}
然后我将每个DataPoint
添加到TimeSeries
对象中,该对象只不过是一个SortedList
:
但我希望能够这样做:
var timeSeries = Load(filename); // Load the data
foreach(var dp in timeSeries)
{
WriteLine($"{dp.Key}, {dp.Values[4]}");
}
var timeSeries = Load(filename); // Load the data
foreach(var dp in timeSeries)
{
WriteLine($"{dp.Date}, {dp.Close}");
}
有没有办法为TimeSeries
对象下标来实现这一点
是否最好使用
TimeSeries
而不是TimeSeries
我过去不复制用作键的字段?最好封装集合字段,然后使用继承:
public class TimeSeries
{
private readonly SortedList<DateTime, DataPoint> internalCollection = new SortedList<DateTime, DataPoint>();
public void Add(DataPoint dataPoint)
{
internalCollection.Add(dataPoint.Date, dataPoint);
}
public IEnumerator<DataPoint> GetEnumerator()
{
foreach(var point in internalCollection)
{
yield return point.Value;
}
}
}
最后一个问题的答案:是的。
public class TimeSeries
{
private readonly SortedList<DateTime, DataPoint> internalCollection = new SortedList<DateTime, DataPoint>();
public void Add(DataPoint dataPoint)
{
internalCollection.Add(dataPoint.Date, dataPoint);
}
public IEnumerator<DataPoint> GetEnumerator()
{
foreach(var point in internalCollection)
{
yield return point.Value;
}
}
}
TimeSeries timeSeries = DataLoader.LoadData();
foreach(var dataPoint in timeSeries)
{
WriteLine($"{dataPoint.Date}, {dataPoint.Close}");
}