1

我只有一个文件和一个要在其中搜索的字符串

Key
 Value1
 Value2
 Value3

Key1
 Value1

这是文件的结构。现在,我搜索一个键,然后读取它下面的所有值,直到找到一个换行符(或者只是一个空行)

我使用这个算法。

var valuelist = new List<string>();
using(var reader = new StreamReader(@"c:\test.txt"))
{
  String a;
  while( (a=reader.ReadLine())!=null)
 {
  if(!a.Equals("Key")) continue;
  while( a == reader.ReadLine() != null) //check whether end of file is not reached.
  {
    if(a.Length == 0) break; //a empty line is reached.hence comeout.
    valuelist.add(a);
  }
  } 
}
  1. 我正在使用“使用”,因为它会自动处理“阅读器”对象?在这种情况下我的方法正确吗?

  2. 在这种情况下,如何在此处使用 LINQ 表达式?

我尝试了以下代码

var all_lines = File.ReadAllLines(@"C:\test.txt");
 //How to retrieve "Values" for a given key using LINQ ?
4

1 回答 1

2
  1. 在这种情况下使用using是非常合适的
  2. 要检索给定键的值,您可以使用SkipWhile按名称查找键,然后TakeWhile查找空行。

var list = new List<string>{
    "junk", " a", " b", "", "key", " c", " d", " e", "", "more", "f"
};
var vals = list.SkipWhile(s => s != "key").Skip(1).TakeWhile(s => s != "");
foreach (var s in vals) {
    Console.WriteLine(s);
}
于 2012-09-21T10:24:18.767 回答