Membaca Baris Fail demi Baris dalam C# Menggunakan LINQ
Apabila berurusan dengan fail teks dalam C#, adalah penting untuk membaca setiap baris dengan cekap. Semasa menggunakan StreamReader dan melelaran melalui baris secara individu adalah pendekatan biasa, meneroka kaedah yang lebih cekap menggunakan LINQ adalah usaha yang berbaloi.
Pelaksanaan LINQ yang Cekap
Untuk mencapai kecekapan ini , pembaca baris berasaskan LINQ boleh dilaksanakan menggunakan blok lelaran. Pendekatan ini mengelakkan memuatkan keseluruhan fail ke dalam memori, memastikan kecekapan operasi untuk fail besar:
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; } } }
Sintaks LINQ yang Dipertingkatkan untuk Kebolehbacaan
Untuk meningkatkan kebolehbacaan, lebih banyak lagi sintaks ringkas boleh digunakan:
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;
Versi ini menyediakan penilaian yang malas urutan tanpa penimbalan, membenarkan operasi seterusnya seperti Where dan OrderBy digunakan dengan cekap.
Pertimbangan Tambahan
Perhatikan bahawa menggunakan OrderBy atau GroupBy standard akan menimbal data dalam memori . Untuk tugasan pengumpulan dan pengagregatan, PushLINQ menawarkan teknik khusus untuk mengendalikan set data yang besar dengan cekap tanpa dikenakan penalti penimbalan.
Atas ialah kandungan terperinci Bagaimanakah LINQ Boleh Membaca Baris Fail mengikut Baris dengan Cekap dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!