使用LINQ解析文本文件

时间:2011-01-28 06:41:34

标签: c# linq text-parsing

我通常知道您会使用File.ReadAllLines,但我正在尝试使用上传的文件。

我可以以某种方式将其放入临时位置吗?或从内存中读取它?

我能够让这个工作

1 个答案:

答案 0 :(得分:4)

这是stringStream还是什么?不管怎样,你想要一个TextReader - 问题只是StringReader vs StreamReader。一旦你 ,我会做类似的事情:

public static IEnumerable<string> ReadLines(TextReader reader) {
    string line;
    while((line = reader.ReadLine()) != null) yield return line;
}

然后使用任何一个读者,我都可以用户:

foreach(var line in ReadLines(reader)) {
    // note: non-buffered - i.e. more memory-efficient
}

或:

string[] lines = ReadLines(reader).ToArray();
// note: buffered - all read into memory at once (less memory efficient)

即。如果是Stream你正在阅读:

using(var reader = new StreamReader(inputStream)) {
    foreach(var line in ReadLines(reader)) {
        // do something fun and interesting
    }
}