将CSV记录转换为自定义数据类型IEnumerable(C#)

时间:2012-01-12 06:05:30

标签: c# csv ienumerable

我有一些纯CSV格式的数据,比如说:

A1,B1
A2,B2
A3,B3

我创建了一个类(CsvRecord),它可以从单个csv行中消耗一个元素。使用Linq,我已经能够使用以下代码行将CSV数据转换为IEnumerable:

IEnumerable<CSVRecord> list = csvList.Select(a => new CSVRecord(a.Split(new char[]{','})[0], a.Split(new char[]{','})[1]));

这确实做了我想做的事情,但仅仅通过观察它,它似乎不是实现这一目标的好方法。你能否建议我如何改进?

感谢。

2 个答案:

答案 0 :(得分:0)

有几个好的CSVReader库。

改善的一个好方法是看看那里的代码,如果你想重新发明轮子作为学习经验,那么使用这些作为例子。

但是,如果您只是想要它们的功能,那么请使用预先存在的库。

退房;

http://www.csvreader.com/(费用,但很好。如果需要,您甚至可以购买源代码)。 http://www.codeproject.com/KB/database/CsvReader.aspx

我确信还有更多的东西。

答案 1 :(得分:-1)

除非您也准备完全实现RFC,否则您绝对不希望编写自己的CSV解析器(如您所确定的)。那可能不是您想要的。有很多不明显的极端情况。幸运的是,实现已经存在。

我会使用CsvHelper。我已经多次使用它进行读写,根据我的经验,它一直是一个很好的库。