LINQ を使用した C# での効率的な行ごとのファイル読み取り
各行を個別に処理する必要があるテキスト ファイルを処理する場合、StreamReader は簡単な解決策。ただし、効率と読みやすさを向上させるために、LINQ はより洗練されたアプローチを提供します。
ファイル全体をメモリに読み込まないようにするために、反復子ブロックの使用を検討してください。
static IEnumerable<SomeType> ReadFrom(string file) { string line; using(var reader = File.OpenText(file)) { while((line = reader.ReadLine()) != null) { SomeType newRecord = /* parse line */ yield return newRecord; } } }
あるいは、より単純な場合は、 version:
static IEnumerable<string> ReadFrom(string file) { string line; using(var reader = File.OpenText(file)) { while((line = reader.ReadLine()) != null) { yield return line; } } }
ReadFrom(...) 関数は、データのバッファリングを回避して、遅延評価されたシーケンスを返します。 ReadFrom(...) を他の LINQ 操作 (Where、Select など) と組み合わせることで、操作効率を犠牲にすることなく効率的な行ごとの処理を実現できます。
以上がC# でファイルを 1 行ずつ読み取るとき、LINQ はどのように効率を向上させることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。