使用 LINQ 在 C# 逐行讀取檔案
處理文字檔案時,通常需要單獨處理每一行。 C# 提供了多種方法來實現此目的,包括使用 StreamReader 和手動讀取每一行。
但是,為了提高效率和可讀性,可以在不影響效能的情況下利用 LINQ(語言整合查詢)。 LINQ 提供了一種更簡潔、更具表現力的資料處理語法。
考慮兩個需要逐行讀取的範例場景:
第一個範例:
using (var file = System.IO.File.OpenText(_LstFilename)) { while (!file.EndOfStream) { String line = file.ReadLine(); // Process line } }
第二例:
using (var file = System.IO.File.OpenText(datFile)) { Regex nameRegex = new Regex("IDENTIFY (.*)"); while (!file.EndOfStream) { String line = file.ReadLine(); // Process line } }
基於LINQ的方法:
要使用LINQ 逐行讀取文件,我們可以使用迭代器區塊來定義自訂可枚舉序列:
static IEnumerable<string> ReadFrom(string file) { string line; using (var reader = File.OpenText(file)) { while ((line = reader.ReadLine()) != null) { yield return line; } } }
此方法傳回一個惰性的IEnumerable 物件根據請求計算每一行,而不將整個檔案緩衝在記憶體中。
然後我們可以使用LINQ 查詢來處理這些行:
var lines = ReadFrom(path); // Process lines using LINQ
使用LINQ,我們可以應用過濾,對行順序進行排序和其他操作,使程式碼更有效率和可讀。請注意,如果使用 OrderBy 或 GroupBy 等操作,LINQ 可能需要緩衝數據,這可能會影響效能。
以上是LINQ 如何改進 C# 中的逐行檔案讀取?的詳細內容。更多資訊請關注PHP中文網其他相關文章!