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