我的层次结构TrendProviders用于提供来自不同来源的一系列数据点(趋势).
我已经开始使用通用接口:
public interface ITrendProvider<T> where T: TrendResult
{
IEnumerable<T> GetTrends();
}
Run Code Online (Sandbox Code Playgroud)
TrendResult 是一个结果类,包含获得的趋势数据和操作状态代码:
public class TrendResult
{
public TrendResult()
{
Points = new Dictionary<DateTimeOffset, decimal>();
}
public TrendResultCode Code { get; set; }
public string Name { get; set; }
public string Identifier { get; set; }
public Dictionary<DateTimeOffset, decimal> Points { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
TrendResultCode 如下:
public enum TrendResultCode
{
OK,
DataParseError,
NoData,
UnknownError
}
Run Code Online (Sandbox Code Playgroud)
还有两种类型(到目前为止)更详细的接口:
IFileTrendProvider - 用于从任何文件中获取趋势.
IServerTrendProvider - 用于从远程服务器获取趋势,例如使用FTP.
IFileTrendProvider 是这样的:
public …Run Code Online (Sandbox Code Playgroud) 我需要过滤数据,Dictionary<DateTime, int>以便只获得后续差异DateTime's为1分钟或更长时间的元素.
例如,在字典中我可以拥有这样的数据对:
var pairs = new Dictionary<DateTime, int>()
{
{ new DateTime(2010, 01, 20, 19, 05, 00), 10 },
{ new DateTime(2010, 01, 20, 19, 05, 19), 11 },
{ new DateTime(2010, 01, 20, 19, 05, 49), 12 },
{ new DateTime(2010, 01, 20, 19, 06, 05), 13 },
{ new DateTime(2010, 01, 20, 19, 07, 05), 14 },
{ new DateTime(2010, 01, 20, 19, 07, 55), 15 },
};
Run Code Online (Sandbox Code Playgroud)
我希望过滤的结果是:
<2010-01-20 19:05:00, 10>
<2010-01-20 …Run Code Online (Sandbox Code Playgroud)