テキスト ファイルを操作する場合、多くの場合、各行を個別に処理する必要があります。 C# では、このタスクに対していくつかのアプローチが提供されていますが、LINQ では、運用効率を損なうことなく、より簡潔で効率的なソリューションを提供できます。
古典的なアプローチには、StreamReader の利用が含まれます。ただし、LINQ は、より柔軟で読みやすいコードを可能にする強力な代替手段を提供します。イテレータを使用して一連の行を作成すると、ファイル全体をメモリにロードする必要がなく、ストリーミング形式で処理できるようになります。
このようなイテレータ ベースの LINQ 式の例を次に示します。 :
static IEnumerable<string> ReadFrom(string file) { string line; using(var reader = File.OpenText(file)) { while((line = reader.ReadLine()) != null) { yield return line; } } }
この関数は、指定されたファイルから読み取られた一連の行を返します。各行は読み取られたときに生成されるため、遅延評価と効率的な処理が可能になります。
行をさらに処理するには、Where、Select、Aggregate などの LINQ メソッドを使用して、フィルタリング、マッピング、集計を実行できます。明示的な反復を必要としない操作。例:
var typedSequence = from line in ReadFrom(path) let record = ParseLine(line) where record.Active // for example select record.Key;
この例では、ReadFrom 関数を使用して一連の行を作成します。次に、各行は ParseLine 関数を使用してデータ レコードに解析されます。 Where 句は非アクティブなレコードを除外し、Select 句は残りの各レコードからキー値を射影します。
要約すると、LINQ とイテレータを使用して、効率的で保守可能な行ごとのファイル読み取りコードを作成できます。 C#。イテレータの機能を活用することで、ファイル全体をメモリにロードするオーバーヘッドを回避し、ファイル処理プロセスを合理化できます。
以上がC# で LINQ とイテレーターがファイルを 1 行ずつ効率的に読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。