我编写了一个查询来获取符合条件的行数。
我使用的linq查询是:
int result = File.ReadLines(filePath).Count(line => line.StartsWith(word));
在这里,我要求符合条件的行不是计数。请帮忙
答案 0 :(得分:2)
File.ReadLines(filePath).Where(line => line.StartsWith(word));
只需将其更改为Where
。
http://msdn.microsoft.com/en-us/library/system.linq.enumerable.where.aspx
根据谓词过滤一系列值。
答案 1 :(得分:2)
使用Where:
List<string> lines = File.ReadLines(filePath)
.Where(line => line.StartsWith(word)).ToList();
然后你可以这样做:
int count = lines.Count;
获取与谓词匹配的行数
答案 2 :(得分:1)
var lines = File.ReadLines(filePath).Where(line => line.StartsWith(word));
var total = lines.Count;
答案 3 :(得分:0)
IEnumerable<string> linesMatching = File.ReadLines(filePath)
.Where(line => line.StartsWith(word));
通过这种方式,您可以使用线条 - 如果您从中创建集合 - 也可以使用计数:
List<string> lines = linesMatching.ToList();
int count = lines.Count;
请注意,一旦执行查询,您就无法重复使用该查询,因为您使用的File.ReadLines
使用了StreamReader
。一旦使用它就会被处理掉。因此,这将引发异常,因为查询已在ToList
执行:
int count = linesMatching.Count();