使用LINQ,從製表符分隔的.txt文件中獲取每個字符串(然後獲取每個單詞,通常是什麼string.Split(...)),使用LINQ有效嗎?Linq和streamreader獲取行
var v = from line in File.ReadAllLines()
select n
是我相信這個解決方案的一部分。我不介意這是否使用收益率回報。
編輯:我也看到這裏的線程詳細說明了我正在嘗試做什麼,但找不到它們。
使用LINQ,從製表符分隔的.txt文件中獲取每個字符串(然後獲取每個單詞,通常是什麼string.Split(...)),使用LINQ有效嗎?Linq和streamreader獲取行
var v = from line in File.ReadAllLines()
select n
是我相信這個解決方案的一部分。我不介意這是否使用收益率回報。
編輯:我也看到這裏的線程詳細說明了我正在嘗試做什麼,但找不到它們。
我不能完全肯定你在問什麼,但這聽起來像你試圖從製表符分隔的文件中得到每一個字作爲IEnumerable<string>
。如果是的話試試以下內容
var query = File.ReadAllLines(somePathVariable)
.SelectMany(x => x.Split(new char[] { '\t' });
使用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拿到,太...
絕對不是最短的版本。查詢操作符太冗長;)'File.ReadAllLines(「file.txt」)。選擇(line => line.Split('\ t'))' – 2010-02-23 17:11:34
是的 - 但OP喜歡使用查詢操作符,所以我離開它。 – 2010-02-23 17:13:32
如果我遇到這種情況,我必須從50MB大小的製表符分隔文件中提取數據,這是否是最好的方法? – 2011-03-22 17:46:46
+1很好的答案和使用Lambda表達式 – 2010-02-23 17:11:48
這就是我正在尋找的道歉,不能很好地表達我的帖子,不知道如何最好地解釋這個問題。我怎麼能把這個和yield return結合起來來返回字符串行中的每個單詞? – dotnetdev 2010-02-23 21:30:21
有沒有一種簡單的方法,除了最後一行之外,對所有人都這麼做? – Andy 2010-11-08 14:26:29