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

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

Mary-Kate Olsen
Lepaskan: 2025-01-01 12:07:10
asal
524 orang telah melayarinya

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

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

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

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!

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