2011-01-28 4 views
1

Я знаю, что обычно вы используете File.ReadAllLines, но я пытаюсь сделать это с помощью загруженного файла.Разбор текстового файла с LINQ

Могу ли я как-то поместить его во временное место? Или прочитать его из памяти?

я смог получить эту работу

+1

Возможно связано http://stackoverflow.com/questions/1797576/c-file-upload-read-to-memory-and-use-as-text-file-is-there-a-better-way –

+2

Что нужен ли синтаксический разбор, и почему вы остановились на LINQ? –

ответ

4

Является ли это string, а Stream, или что? в любом случае, вы хотите 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) 

т.е. если a Stream Вы читаете с:

using(var reader = new StreamReader(inputStream)) { 
    foreach(var line in ReadLines(reader)) { 
     // do something fun and interesting 
    } 
} 
Смежные вопросы