首頁 > 後端開發 > C++ > C# 讀取大型文字檔案時,LINQ 如何提高效率和可讀性?

C# 讀取大型文字檔案時,LINQ 如何提高效率和可讀性?

Mary-Kate Olsen
發布: 2025-01-05 00:23:47
原創
924 人瀏覽過

How Can LINQ Improve Efficiency and Readability When Reading Large Text Files in C#?

使用 LINQ 進行高階檔案讀取

假設我們有兩個文字文件,其中每一行代表一個要處理的單獨元素。我們的目標是探索使用 C# 逐行讀取這些檔案的高效且可讀的方法。

目前方法

目前,我們使用 StreamReader 單獨讀取每一行。雖然此方法很簡單,但對於較大的檔案或需要選擇特定行時,它可能會變得低效。

利用LINQ

LINQ 提供了一個強大的方法來解決此問題問題:

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

此方法使用迭代器區塊來實作惰性行讀取器。透過使用yield關鍵字,它一次傳回一筆記錄,而無需緩衝整個檔案。

增強靈活性

為了解決記憶體消耗問題,我們可以修改程式碼略:

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

現在,這個方法回傳一個沒有緩衝的字串序列。然後,我們可以使用像Where和Select這樣的LINQ運算子來根據需要過濾和處理行。

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

此程式碼使用ReadFrom方法建立延遲計算的序列,使我們能夠執行複雜的操作,而無需持有整個檔案都在記憶體中。

結論

透過利用 LINQ,我們可以顯著地改善我們的檔案讀取程式碼的效率和可讀性。惰性求值方法避免了不必要的記憶體消耗,使其成為處理大檔案或選擇特定行的理想選擇。

以上是C# 讀取大型文字檔案時,LINQ 如何提高效率和可讀性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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