创建IEnumerable<;MyObj>;从csv文件输入

本文关键字:csv 输入 文件 MyObj IEnumerable lt 创建 gt | 更新日期: 2023-09-27 18:19:35

我有一些大的csv文件,需要导入到IEnumerable(prob a list)中,这样我就可以在保存到数据库之前对它们进行一些"魔术"处理。我不需要csv中的每个值(列)。

然而,我找不到比这更好的选择:

Read csv file by line
Split the line on ,
new MyObj{
  Prop1 = split[0],
  Prop2 = split[1],
  Prop3 = split[6],
  Prop4 = split[7],
  Prop5 = split[9]
}
Add new MyObj to List

这很有效,速度也很快,但看起来很笨重?

有没有其他选择(除了添加一个ctor,它的效果与上面相同)。

创建IEnumerable<;MyObj>;从csv文件输入

您可以使用CSV解析器-在Microsoft.VisualBasic.FileIO命名空间中有一个解析器-TextFieldParser

FileHelpers是另一个受欢迎的选项,周围有很多免费的(只是搜索)。

您可能会发现FileHelpers库非常有用。

只要您确信数据中永远不会有逗号,您的代码看起来就很好。

网络上有许多csv阅读器更健壮:这里有一个

我有一个非常相似的应用程序,它执行相同形式的翻译,我们将所有行读取到IDictionary中,然后使用Data Parallelism Parallel.ForEach(sourceCollection,item=>Process(key,item))执行新对象创建。任何错误,我们都会记录行号Key。