各行を処理する必要があるテキスト ファイルを読み込もうとしています。現時点では、StreamReader を使用して、各行を個別に読んでいます。
運用効率を損なうことなく、LINQ を使用してこれを行うより効率的な方法 (LoC と読みやすさの点で) があるかどうか疑問に思っています。私が見た例では、ファイル全体をメモリにロードしてから処理しています。ただし、この場合、それが非常に効率的であるとは思いません。最初の例では、ファイルは最大で約 50k になり、2 番目の例では、ファイルのすべての行を読み取る必要はありません (通常、サイズは 10k 未満です)。
最近では、これらの小さなファイルはそれほど重要ではないと主張することもできますが、私は、この種のアプローチが非効率的なコードにつながると考えています。
最初の例:
// Open file
using(var file = System.IO.File.OpenText(_LstFilename))
{
// Read file
while (!file.EndOfStream)
{
String line = file.ReadLine();
// Ignore empty lines
if (line.Length > 0)
{
// Create addon
T addon = new T();
addon.Load(line, _BaseDir);
// Add to collection
collection.Add(addon);
}
}
}
2 番目の例:
// Open file
using (var file = System.IO.File.OpenText(datFile))
{
// Compile regexs
Regex nameRegex = new Regex("IDENTIFY (.*)");
while (!file.EndOfStream)
{
String line = file.ReadLine();
// Check name
Match m = nameRegex.Match(line);
if (m.Success)
{
_Name = m.Groups[1].Value;
// Remove me when other values are read
break;
}
}
}