Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah LINQ Boleh Meningkatkan Kecekapan dan Kebolehbacaan Apabila Membaca Fail Teks Besar dalam C#?
Bacaan Fail Terperinci dengan LINQ
Andaikan kita mempunyai dua fail teks, di mana setiap baris mewakili elemen berasingan untuk diproses. Matlamat kami adalah untuk meneroka kaedah yang cekap dan boleh dibaca untuk membaca fail ini baris demi baris menggunakan C#.
Pendekatan Semasa
Pada masa ini, kami menggunakan StreamReader untuk membaca setiap baris secara individu . Walaupun kaedah ini mudah, ia mungkin menjadi tidak cekap untuk fail yang lebih besar atau apabila baris tertentu perlu dipilih.
Memanfaatkan LINQ
LINQ menyediakan pendekatan yang berkuasa untuk menyelesaikan masalah ini masalah:
static IEnumerable<SomeType> ReadFrom(string file) { string line; using(var reader = File.OpenText(file)) { while((line = reader.ReadLine()) != null) { SomeType newRecord = /* parse line */ yield return newRecord; } } }
Kaedah ini menggunakan blok lelaran untuk melaksanakan pembaca baris malas. Dengan menggunakan kata kunci hasil, ia mengembalikan satu rekod pada satu masa tanpa menimbal keseluruhan fail.
Fleksibiliti Dipertingkat
Untuk menangani isu penggunaan memori, kami boleh mengubah suai kod sedikit:
static IEnumerable<string> ReadFrom(string file) { string line; using(var reader = File.OpenText(file)) { while((line = reader.ReadLine()) != null) { yield return line; } } }
Sekarang, kaedah ini mengembalikan urutan rentetan tanpa penimbal. Kami kemudiannya boleh menggunakan pengendali LINQ seperti Where and Select untuk menapis dan memproses garisan mengikut keperluan.
... var typedSequence = from line in ReadFrom(path) let record = ParseLine(line) where record.Active // for example select record.Key;
Kod ini menggunakan kaedah ReadFrom untuk mencipta jujukan yang dinilai dengan malas, membolehkan kami melakukan operasi yang kompleks tanpa menahan keseluruhan fail dalam ingatan.
Kesimpulan
Dengan menggunakan LINQ, kami boleh meningkatkan kecekapan dan kebolehbacaan kod bacaan fail kami dengan ketara. Pendekatan penilaian malas mengelakkan penggunaan memori yang tidak perlu, menjadikannya sesuai untuk memproses fail besar atau memilih baris tertentu.
Atas ialah kandungan terperinci Bagaimanakah LINQ Boleh Meningkatkan Kecekapan dan Kebolehbacaan Apabila Membaca Fail Teks Besar dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!