處理文字檔案時,通常需要單獨處理每一行。 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中文網其他相關文章!