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

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

Mary-Kate Olsen
發布: 2025-01-01 12:07:10
原創
524 人瀏覽過

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

使用LINQ 在C# 中逐行讀取檔案

在C# 處理文字檔案時,有效讀取每一行至關重要。雖然使用 StreamReader 並逐行迭代是一種常見方法,但使用 LINQ 探索更有效率的方法是值得努力的。

高效的 LINQ 實作

要實現這種效率,基於 LINQ 的行讀取器可以使用迭代器區塊來實現。這種方法可以避免將整個檔案載入記憶體中,從而確保大檔案的運作效率:

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;
        }
    }
}
登入後複製

增強的 LINQ語法以提高可讀性

為了增強可讀性,可以使用簡潔的語法:

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;  
登入後複製

這個版本提供了一個無需緩衝的惰性求值序列,允許後續操作(例如Where和OrderBy)可以有效應用。

其他注意事項

請注意,使用OrderBy或標準GroupBy會將資料緩衝在記憶體中。對於分組和聚合任務,PushLINQ 提供了專門的技術來有效處理大型資料集,而不會產生緩衝損失。

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

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