代码之家  ›  专栏  ›  技术社区  ›  GurdeepS

Linq和StreamReader获取线路

  •  5
  • GurdeepS  · 技术社区  · 14 年前

    使用linq,从以制表符分隔的.txt文件中获取每个字符串(然后获取每个单词,通常是string.split(…)的一种有效方法是什么?

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

    我相信这是解决方案的一部分。我不介意这是否使用收益率回报。

    编辑:我在这里也看到了一些线索,详细说明了我想做什么,但找不到它们。

    2 回复  |  直到 14 年前
        1
  •  7
  •   Mehrdad Afshari    14 年前

    我不完全确定您在问什么,但听起来您试图从一个以制表符分隔的文件中获取每个单词作为 IEnumerable<string> . 如果是,请尝试以下操作

    var query = File.ReadAllLines(somePathVariable)
                    .SelectMany(x => x.Split(new char[] { '\t' });
    
        2
  •  0
  •   Reed Copsey    14 年前

    使用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来获得它…