Apabila bekerja dengan fail teks, selalunya perlu memproses setiap baris secara individu. C# menawarkan beberapa pendekatan untuk tugas ini, tetapi LINQ boleh menyediakan penyelesaian yang lebih ringkas dan cekap tanpa menjejaskan kecekapan operasi.
Pendekatan klasik melibatkan penggunaan StreamReader. Walau bagaimanapun, LINQ menawarkan alternatif berkuasa yang membolehkan kod yang lebih fleksibel dan boleh dibaca. Iterator boleh digunakan untuk mencipta jujukan baris, yang kemudiannya boleh diproses dalam cara penstriman, mengelakkan keperluan untuk memuatkan keseluruhan fail ke dalam memori.
Berikut ialah contoh ungkapan LINQ berasaskan iterator sedemikian :
static IEnumerable<string> ReadFrom(string file) { string line; using(var reader = File.OpenText(file)) { while((line = reader.ReadLine()) != null) { yield return line; } } }
Fungsi ini mengembalikan urutan baris yang dibaca daripada fail yang ditentukan. Setiap baris dihasilkan semasa ia dibaca, membolehkan penilaian yang malas dan pemprosesan yang cekap.
Untuk memproses baris dengan lebih lanjut, anda boleh menggunakan kaedah LINQ seperti Where, Select dan Agregate untuk melakukan penapisan, pemetaan dan pengagregatan operasi tanpa memerlukan lelaran eksplisit. Contohnya:
var typedSequence = from line in ReadFrom(path) let record = ParseLine(line) where record.Active // for example select record.Key;
Dalam contoh ini, fungsi ReadFrom digunakan untuk mencipta jujukan baris. Setiap baris kemudian dihuraikan ke dalam rekod data menggunakan fungsi ParseLine. Klausa Where menapis rekod tidak aktif dan klausa Pilih menayangkan nilai utama daripada setiap rekod yang tinggal.
Ringkasnya, LINQ dan iterator boleh digunakan untuk mencipta kod bacaan fail baris demi baris yang cekap dan boleh diselenggara dalam C#. Dengan memanfaatkan keupayaan iterator, anda boleh mengelakkan overhed memuatkan keseluruhan fail ke dalam memori dan menyelaraskan proses pemprosesan fail.
Atas ialah kandungan terperinci Bagaimanakah LINQ dan Iterator Boleh Membaca Baris Fail dengan Baris dengan Cekap dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!