背景:
我创建了一个通用的TimeSeries<T>
类,应该实现IEnumerable<IEnumerable<T>>
接口:
public interface ITimeSeries<T> : IEnumerable<IEnumerable<T>>
{
T[,] DataMatrix { get; }
DateTime[] DateTime { get; }
string[] Variables { get; }
}
public class TimeSeries<T> : ITimeSeries<T>
{
public IEnumerator<IEnumerable<T>> GetEnumerator()
{...}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
TimeSeries<T>
类实际上是一个矩阵数据结构,其中每列代表不同的变量,每行代表一次观测。此外,还有一个额外的DateTime[]
数组表示时间轴。作为开始,我希望能够通过
foreach
循环逐个变量遍历TimeSeries<T>
变量,也可以通过内部foreach
循环遍历特定变量的所有观察结果,但实现IEnumerable接口的真正原因是获得所有由IEnumerable接口提供的LINQ功能,前提是我可以确保每个观测结果的DateTime关联保持完好无损。那么问题来了:如何实现
GetEnumerator
方法来实现这一目标?
StackOverflow
上也可以查看这个答案。 - tweakch