Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah LINQ dan Iterator Boleh Membaca Baris Fail dengan Baris dengan Cekap dalam C#?

Bagaimanakah LINQ dan Iterator Boleh Membaca Baris Fail dengan Baris dengan Cekap dalam C#?

Susan Sarandon
Lepaskan: 2025-01-04 17:25:40
asal
606 orang telah melayarinya

How Can LINQ and Iterators Efficiently Read a File Line by Line in C#?

Membaca Baris Fail demi Baris dalam C# dengan LINQ dan Iterator

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;
        }
    }
}
Salin selepas log masuk

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan