1

我是 FileHelper 的新手,所以请耐心等待。我想读取一个现有的 .csv 文件,其中的一列没有数据。接下来,我想从 db 填充该列(附加的代码现在只是放入一个字符串,稍后我将处理 db 调用)然后,我想输出包含更新的列信息的文件。

    static void Main(string[] args)
    {
        var engine = new FileHelperAsyncEngine<Agents>();
        using (engine.BeginReadFile(@"C:\Users\me\Documents\Agents.csv"))
        {
            int pId = 100;

            // The engine is IEnumerable
            foreach (Agents agent in engine)
            {
                agent.PersonID = pId.ToString();
                pId++;
            }
                      engine.BeginWriteFile(@"C:\Users\me\Documents\Output.csv");
        }
    }

这将读取文件,但仅输出第一行(在本例中为标题行)我希望获得整个更新的文件

4

1 回答 1

2

那是因为您使用相同FileHelperAsyncEngine的方式将输出写入。您需要打开另一个FileHelperAsyncEngine.

您所做的engine.BeginWriteFile只是关闭读取流并打开写入流。

你的意思可能更像这样:

static void Main(string[] args)
{
  var engine = new FileHelperAsyncEngine<Agents>();
  var outEngine = new FileHelperAsyncEngine<Agents>();

  using (engine.BeginReadFile(@"C:\Users\me\Documents\Agents.csv"))
  using (outEngine.BeginWriteFile(@"C:\Users\me\Documents\Output.csv"))
  {
    int pId = 100;

    // The engine is IEnumerable
    foreach (var record in engine)
    {
      record.PersonID = pId.ToString();
      pId++;

      outEngine.WriteNext(record);
    }
  }
}
于 2019-08-13T17:24:01.930 回答