Linq и потоковый ридер - PullRequest
       9

Linq и потоковый ридер

5 голосов
/ 23 февраля 2010

Используя LINQ, как эффективно получить каждую строку из файла .txt с разделителями табуляции (и затем получить каждое слово, обычно то, что делает string.Split (...)) *

var v = from line in File.ReadAllLines()
   select n

Я считаю, что является частью этого решения. Я не против, если это использует доходность.

РЕДАКТИРОВАТЬ: я также видел здесь темы, подробно описывающие то, что я пытаюсь сделать, но не могу их найти.

Ответы [ 2 ]

7 голосов
/ 23 февраля 2010

Я не совсем уверен, что вы спрашиваете, но похоже, что вы пытаетесь получить каждое слово из файла с разделителями табуляции как IEnumerable<string>. Если это так, попробуйте следующее

var query = File.ReadAllLines(somePathVariable)
                .SelectMany(x => x.Split(new char[] { '\t' });
0 голосов
/ 23 февраля 2010

Использовать File.ReadAllLines легко, но не обязательно наиболее эффективно, поскольку он считывает всю строку в память.

Короткая версия, вероятно, будет:

var wordsPerLine = from line in File.ReadAllLines(filename)
               select string.Split(line, '\t');

foreach(var line in wordsPerLine)
{
    foreach(word in line)
    {
        // process word...
    }
}

Если вы хотите одно перечисление слов, вы можете использовать SelectMany, чтобы получить это тоже ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...