编写LINQ查询困难

时间:2013-10-08 14:42:13

标签: c# linq filesystems

我编写了一个查询来获取符合条件的行数。

我使用的linq查询是:

int result = File.ReadLines(filePath).Count(line => line.StartsWith(word));

在这里,我要求符合条件的行不是计数。请帮忙

4 个答案:

答案 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();