首頁 > 後端開發 > C++ > C#中LINQ和迭代器如何有效率地逐行讀取檔案?

C#中LINQ和迭代器如何有效率地逐行讀取檔案?

Susan Sarandon
發布: 2025-01-04 17:25:40
原創
604 人瀏覽過

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

使用 LINQ 和迭代器在 C# 中逐行讀取檔案

處理文字檔案時,通常需要單獨處理每一行。 C# 提供了多種方法來完成此任務,但 LINQ 可以提供更簡潔、更有效率的解決方案,而不會影響操作效率。

經典方法涉及使用 StreamReader。然而,LINQ 提供了一個強大的替代方案,允許更靈活和可讀的程式碼。迭代器可用於建立一系列行,然後可以以串流處理方式對其進行處理,從而無需將整個檔案載入記憶體。

以下是此類基於迭代器的 LINQ 表達式的範例:

static IEnumerable<string> ReadFrom(string file) {
    string line;
    using(var reader = File.OpenText(file)) {
        while((line = reader.ReadLine()) != null) {
            yield return line;
        }
    }
}
登入後複製

此函數傳回從指定檔案讀取的行序列。每行在讀取時都會生成,從而實現惰性求值和高效處理。

要進一步處理這些行,您可以使用 LINQ 方法(例如Where、Select 和 Aggregate)來執行過濾、映射和聚合不需要明確迭代的操作。例如:

var typedSequence = from line in ReadFrom(path)
                    let record = ParseLine(line)
                    where record.Active // for example
                    select record.Key;
登入後複製

在此範例中,ReadFrom 函數用於建立行序列。然後使用 ParseLine 函數將每一行解析為資料記錄。 Where 子句過濾掉不活動的記錄,Select 子句從每個剩餘記錄中投影一個鍵值。

總而言之,LINQ 和迭代器可用於建立高效且可維護的逐行檔案讀取程式碼C#。透過利用迭代器的功能,您可以避免將整個檔案載入到記憶體中的開銷並簡化檔案處理過程。

以上是C#中LINQ和迭代器如何有效率地逐行讀取檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板