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