LINQ を使用して C# でファイルを 1 行ずつ読み取る
C# でテキスト ファイルを扱うときは、各行を効率的に読み取ることが重要です。 StreamReader を使用して行を個別に反復するのが一般的なアプローチですが、LINQ を使用したより効率的な方法を検討することは価値のある取り組みです。
効率的な LINQ 実装
この効率を達成するには、LINQ ベースのライン リーダーはイテレータ ブロックを使用して実装できます。このアプローチにより、ファイル全体をメモリにロードすることが回避され、大きなファイルの操作効率が確保されます。
static IEnumerable<T> ReadFrom(string file) { string line; using (var reader = File.OpenText(file)) { while ((line = reader.ReadLine()) != null) { T newRecord = /* parse line */ yield return newRecord; } } }
読みやすさを向上させるための LINQ 構文の強化
読みやすさを向上させるために、さらに簡潔な構文を使用できます:
static IEnumerable<string> ReadFrom(string file) { string line; using (var reader = File.OpenText(file)) { while ((line = reader.ReadLine()) != null) { yield return line; } } } ... var typedSequence = from line in ReadFrom(path) let record = ParseLine(line) where record.Active // for example select record.Key;
このバージョンでは、遅延評価されたシーケンスが提供されます。
追加の考慮事項
OrderBy または標準の GroupBy を使用すると、データがメモリ内にバッファリングされることに注意してください。グループ化および集約タスクの場合、PushLINQ は、バッファリング ペナルティを発生させることなく大規模なデータセットを効率的に処理するための特殊な技術を提供します。
以上がC# で LINQ がファイルを 1 行ずつ効率的に読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。