C# 计算文本文件中的行数

C# 计算文本文件中的行数,c#,C#,文本文件中有以下行,我需要知道有多少行以Y结尾,有多少行以N结尾 在Y和N后面有一个空格 速度越快越好,因为它可能包含大约一百万行。因此,我不希望在每一行中循环当然,您必须在每一行中循环。这真的是绕不开的。然后,您可以使用LINQ合理轻松地计算它们: var query = File.ReadLines("file.txt") .Select(line => new { Y = line.EndsWith("Y ") ? 1 : 0,

文本文件中有以下行,我需要知道有多少行以Y结尾,有多少行以N结尾

在Y和N后面有一个空格

速度越快越好,因为它可能包含大约一百万行。因此,我不希望在每一行中循环

当然,您必须在每一行中循环。这真的是绕不开的。然后,您可以使用LINQ合理轻松地计算它们:

var query = File.ReadLines("file.txt")
                .Select(line => new { Y = line.EndsWith("Y ") ? 1 : 0,
                                      N = line.EndsWith("N ") ? 1 : 0 })
                .Aggregate(new { Y = 0, N = 0 },
                           (current, next) => new { Y = current.Y + next.Y,
                                                    N = current.N + next.N });

var yCount = query.Y;
var nCount = query.N;
如果Y/N后面没有一个空格,请将其改为使用Trim。。。例如:

var query = File.ReadLines("file.txt")
                .Select(line => line.Trim())
                .Select(line => new { Y = line.EndsWith("Y") ? 1 : 0,
                                      N = line.EndsWith("N") ? 1 : 0 })
// remainder of code as before

这将只在整个文件中迭代一次,并按顺序计数。诚然,它创建了很多对象,但是GC相当不错。它不会将整个文件拉入内存,也不会读取两次。

您尝试过什么?你遇到了什么问题?当然,你的问题是什么?什么是C文本文件?这与普通的文本文件不同吗?因为行的末尾有空格,所以在检查之前必须对其进行修剪@托拜厄斯:你怎么知道行尾有空格?File.ReadLines不包括行分隔符,如果这是您所想的……问题的第二段指出,在Y后面和N后面有一个空格,检查Y和N应该足够了。@HenkHolterman:至少只要提到的段落实际上是准确的,这是不确定的,因此提出了更安全的方法。