Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah LINQ Boleh Meningkatkan Pembacaan Fail Baris demi Baris dalam C#?

Bagaimanakah LINQ Boleh Meningkatkan Pembacaan Fail Baris demi Baris dalam C#?

DDD
DDDasal
2025-01-01 07:25:10842semak imbas

How Can LINQ Improve Line-by-Line File Reading in 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!

Kenyataan:
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