Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah LINQ Boleh Meningkatkan Pembacaan Fail Baris demi Baris dalam C#?
Membaca Fail Baris demi Baris dalam C# dengan LINQ
Apabila bekerja dengan fail teks, selalunya perlu memproses setiap baris secara individu. C# menyediakan beberapa cara untuk mencapai ini, termasuk menggunakan StreamReader dan membaca setiap baris secara manual.
Walau bagaimanapun, untuk kecekapan dan kebolehbacaan yang lebih baik, LINQ (Language INtegrated Query) boleh dimanfaatkan tanpa menjejaskan prestasi. LINQ menawarkan sintaks yang lebih ringkas dan ekspresif untuk bekerja dengan data.
Pertimbangkan dua contoh senario di mana pembacaan baris demi baris diperlukan:
Contoh Pertama:
using (var file = System.IO.File.OpenText(_LstFilename)) { while (!file.EndOfStream) { String line = file.ReadLine(); // Process line } }
Kedua Contoh:
using (var file = System.IO.File.OpenText(datFile)) { Regex nameRegex = new Regex("IDENTIFY (.*)"); while (!file.EndOfStream) { String line = file.ReadLine(); // Process line } }
Pendekatan berasaskan LINQ:
Untuk membaca fail baris demi baris dengan LINQ, kita boleh menggunakan blok lelaran untuk menentukan adat Urutan terbilang:
static IEnumerable<string> ReadFrom(string file) { string line; using (var reader = File.OpenText(file)) { while ((line = reader.ReadLine()) != null) { yield return line; } } }
Kaedah ini mengembalikan objek IEnumerable yang menilai setiap baris dengan malas seperti yang diminta, tanpa menimbal keseluruhan fail dalam memori.
Kami kemudiannya boleh menggunakan pertanyaan LINQ untuk memproses baris:
var lines = ReadFrom(path); // Process lines using LINQ
Dengan LINQ, kami boleh menggunakan penapisan, pesanan dan operasi lain kepada jujukan baris, menjadikan kod lebih cekap dan boleh dibaca. Ambil perhatian bahawa jika operasi seperti OrderBy atau GroupBy digunakan, LINQ mungkin perlu menimbal data, yang berpotensi menjejaskan prestasi.
Atas ialah kandungan terperinci Bagaimanakah LINQ Boleh Meningkatkan Pembacaan Fail Baris demi Baris dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!