处理文本文件时,通常需要单独处理每一行。 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中文网其他相关文章!