複数のcsvファイルを読み込んでマージする必要があります。マージされたデータは、チャートの生成に使用されます (.NET チャート コントロールを使用)。
これまでのところ、単純なストリームリーダーでこれを行い、すべてを 1 つの DataTable に追加しました。
while (sr.Peek() > -1)
{
strLine = sr.ReadLine();
strLine = strLine.TrimEnd(';');
strArray = strLine.Split(delimiter);
dataTableMergedData.Rows.Add(strArray);
}
しかし、ログファイルが変更される可能性があるという問題があります。ここでわかるように、新しいログファイルには追加の列があります。
私の現在の手順は現在機能していません。これを行う方法についてアドバイスを求めています。各ログファイルには約 1500 行、最大 100 列が含まれ、ログファイルは最大 1 年間 (365 ファイルに相当) マージされるため、パフォーマンスは重要です。
私はそのようにします:最後にすべてのデータを含むDataTableを作成し、各ログファイルを個別のDataTableに読み込みます。各読み取り操作の後、別の DataTable を「大きな」DataTable に追加し、列が変更されたかどうかを確認し、変更された場合は新しい列を追加します。
しかし、DataTables を使用するとパフォーマンスに影響するのではないかと心配しています。
注: 私は winforms でこれを行っていますが、とにかく問題ではないと思います。
編集: CsvReaderを試しましたが、これは現在のソリューションよりも約 4 倍遅いです。