使用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中文網其他相關文章!