使用迭代器 遍历文件信息的详解

1.迭代文件的行

  

复制代码 代码如下:

  public static IEnumerable<string> ReadLines(string fileName)

  {

  using (TextReader reader = File.OpenText(fileName))

  {

  string line;

  if ((line = reader.ReadLine()) != null)

  {

  yield return line;

  }

  }

  }

  static void Main()

  {

  foreach (string line in Iterator.ReadLines(""))

  {

  Console.WriteLine(line);

  }

  }

  2.使用迭代器和谓词对文件中的行进行筛选

  

复制代码 代码如下:

  public static IEnumerable<T> where<T>(IEnumerable<T> source, Predicate<T> predicate)

  {

  if (source == null || predicate == null)

  {

  throw new ArgumentNullException();

  }

  return WhereImplemeter(source, predicate);

  }

  private static IEnumerable<T> WhereImplemeter<T>(IEnumerable<T> source, Predicate<T> predicate)

  {

  foreach (T item in source)

  {

  if (predicate(item))

  {

  yield return item;

  }

  }

  }

  static void Main()

  {

  IEnumerable<string> lines = File.ReadAllLines(@"your file name");

  Predicate<string> predicate = delegate(string line)

  {

  return line.StartsWith("using");

  };

  foreach (string str in where(lines, predicate))

  {

  Console.WriteLine(str);

  }

  }