使用linq查询文本块?

时间:2012-10-17 16:29:42

标签: linq text

我有一个文本文件,其中包含一些“块”格式的数据:

source : source location
filename : somefile.txt
vendor : somevendor
version : xx.xx.xxx

source : source location2
filename : somefile2.txt
vendor : somevendor2
version : yy.yy.yyy

我可以使用Linq来查询这些数据,如果是这样,你会怎么做呢?我已经使用linq多次查询来自文本文件的数据行,但从来没有像上面那样“阻塞”数据。感谢您的投入。

1 个答案:

答案 0 :(得分:1)

是的,您可以使用LINQ,如果您有大文件,这种方法没有太多优化。以下是获取数据的方法:

var lines = File.ReadLines("C:\\text.txt")
                .Where(line => !string.IsNullOrWhiteSpace(line))
                .ToList();

for (int i = 0; i < lines.Count; i += 4)
{
    var location = lines[i].Split(':')[1];
    var fileName = lines[i + 1].Split(':')[1];
    var vendor = lines[i + 2].Split(':')[1];
    var version = lines[i + 3].Split(':')[1];
}

使用LINQ的版本:

var result = Enumerable.Range(0, lines.Count()/4).Select(i => new {
        location = lines[4*i].Split(':')[1];
        fileName = lines[4*i + 1].Split(':')[1];
        vendor = lines[4*i + 2].Split(':')[1];
        version = lines[4*i + 3].Split(':')[1];
    });