私は実行に非常に長い時間がかかる次の方法を持っており、それをより速く実行したり、より効率的にしたりするための助けが欲しいです。
このメソッドの主な役割は、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;
}
}
}
注:私はマッピングのクラスとメソッドを完全に制御しているので、根本的に間違ったことをしている場合。知りたい!
ありがとう!