我有以下方法需要很长时间才能运行,并且希望得到一些帮助以使其运行得更快或更高效。
该方法的主要职责是获取从 CSV 文件创建的数据点列表,Name
将文件数据点的属性映射到属性HistorianTagname
的标记名列表中的DataLoggerTagname
属性,并从映射中创建结果列表。如果映射不存在,则忽略文件数据点。
我知道那是冗长的,但我希望这是有道理的。只看方法可能更容易:
private IEnumerable<DataPoint> GetHistorianDatapoints(IEnumerable<DataPoint> fileDatapoints, IEnumerable<Tagname> historianTagnames)
{
/**
** REFACTOR THIS
**/
foreach (var fileDatapoint in fileDatapoints)
{
var historianTagname = historianTagnames.FirstOrDefault(x => x.DataLoggerTagname.Equals(fileDatapoint.Name, StringComparison.OrdinalIgnoreCase));
if (historianTagname != null)
{
var historianDatapoint = new DataPoint();
historianDatapoint.Name = historianTagname.HistorianTagname;
historianDatapoint.Date = fileDatapoint.Date;
historianDatapoint.Value = fileDatapoint.Value;
yield return historianDatapoint;
}
}
}
注意:我可以完全控制映射的类和方法,所以如果我做的事情根本上是错误的。我愿意知道!
谢谢!