次のコードがあります。同じタスクを達成するためのより効率的な方法はありますか?
- フォルダーを指定して、フォルダー内のファイルをループします。
- 各ファイル内で、最初の 4 つのヘッダー行をスキップし、
- スペースに基づいて行を分割した後、結果の配列に含まれる要素が 7 つ未満の場合はスキップし、
- 指定された要素が辞書に既に存在するかどうかを確認します。そうであれば、カウントを増やします。そうでない場合は、追加します。
複雑なプロセスではありません。これを行うより良い方法はありますか?リンク?
string sourceDirectory = @"d:\TESTDATA\";
string[] files = Directory.GetFiles(sourceDirectory, "*.log",
SearchOption.TopDirectoryOnly);
var dictionary = new Dictionary<string, int>();
foreach (var file in files)
{
string[] lines = System.IO.File.ReadLines(file).Skip(4).ToArray();
foreach (var line in lines)
{
var elements = line.Split(' ');
if (elements.Length > 6)
{
if (dictionary.ContainsKey(elements[9]))
{
dictionary[elements[9]]++;
}
else
{
dictionary.Add(elements[9], 1);
}
}
}
}