ホームページ > バックエンド開発 > C++ > C# で LINQ がファイルを 1 行ずつ効率的に読み取るにはどうすればよいですか?

C# で LINQ がファイルを 1 行ずつ効率的に読み取るにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-01 12:07:10
オリジナル
524 人が閲覧しました

How Can LINQ Efficiently Read a File Line by Line in C#?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート