黄岩区信誉好高端网站设计,网站成品下载,连云港seo优化公司,合肥网站优化软件感谢本篇首先特别感谢从此启程兄的《.NetCore外国一些高质量博客分享》, 发现很多国外的.NET Core技术博客资源, 我会不定期从中选择一些有意思的文章翻译总结一下。.NET Core中的CSV解析库本篇博客来源于.NET Core Totorials的《CSV Parsing In .NET Core》。背景介绍对于初级… 感谢本篇首先特别感谢从此启程兄的《.NetCore外国一些高质量博客分享》, 发现很多国外的.NET Core技术博客资源, 我会不定期从中选择一些有意思的文章翻译总结一下。.NET Core中的CSV解析库本篇博客来源于.NET Core Totorials的《CSV Parsing In .NET Core》。背景介绍对于初级程序员来说, 使用string.Split(,)来解析CSV文件基本就是唯一可行的方法, 但是之后他们会发现除了使用逗号分隔值之外CSV中还有其他需要处理的东西所以作者就介绍了CSV解析的一些痛点并推荐了2个比较好用CSV解析库。CSV解析一些痛点一个CSV文件有可能有表头也可能没有表头。如果表头存在的话解析CSV时列的顺序就不太重要了因为你可以根据表头知道所需的数据在第几列。如果表头不存在的话解析CSV时就需要依赖列的顺序。所以CSV的解析应该即支持表头也支持按列的顺序。CSV文件中某一列的值可能是带双引号的字符串字符串中可能包含换行符、逗号双引号。例11,2,a,b例2: 1,2,a[换行符]b例3: 1,2,this is Good. (注双引号字符串中的出现的连续双引号表示转义这里真正的文本是this is Good.)CSV文件中每一行的数据的数据列数量“应该”一样但不是必须一样所以解析CSV需要处理这些不一致的情况在.NET中当反序列化一个CSV文件的时候还需要支持反序列化成集合支持枚举支持自定义映射支持映射嵌套对象.NET Core中的一些优秀CSV解析库这里作者推荐了2个CSV解析库一个是CSVHelper, 一个是Tiny CSV Parser。测试例子为了测试这些CSV解析库我们首先创建一个.NET Core的控制台程序然后我们添加一个Automobile类其代码如下最后我们创建一个csv文件sample.txt作为测试文件我们希望将当前csv文件中的数据反序列化到一个Automobile类的对象实例中。其内容如下Make,Model,Type,Year,Price,CommentToyota,Corolla,Car,1990,2000.99,Comment with a,
line break and quotes这个文件中第一行是一个表头第二行是一个数据行数据行中包含了字符串内容换行字符串中有逗号字符串中有双引号CSVHelperCSVHelper是一个CSV文件的读写库。它支持读写自定义类对象。官网地址https://joshclose.github.io/CsvHelper/安装我们可以使用Package Manager Console来安装CSVHelper。命令如下PM Install-Package CsvHelper解析CSV使用CSVHelper解析CSV文件代码很简单, 还需要2步使用CsvReader类的对象实例读取CSV文件使用GetRecords方法来反序列化最终结果从结果上看上面提到的CSV解析痛点CSVHelper都实现了特别是针对Comment字段中的逗号、换行、双引号CSVHelper都处理的很成功。Tiny CSV Parser下一个介绍的CSV解析器是Ting CSV Parser, 官网http://bytefish.github.io/TinyCsvParser/index.html, 它是使用配置的方式映射CSV字段, 使用方式上有点类似于AutoMapper安装我们可以使用Package Manager Console来安装Tiny CSV Parser。命令如下PM Install-Package TinyCsvParser解析CSV使用Tiny CSV Parser解析CSV文件首先我们需要创建一个映射类。映射类需要继承自CsvMapping映射类代码其中有几个要点MapProperty是根据列的索引来映射属性的。当映射枚举时需要使用EnumConverter来映射。当映射子对象的时候需要创建子对象对应的Converter, 例如AutomobileCommentTypeConverter。然后我们修改Program.cs, 使用CsvParser来解析sample.txt最终结果从结果上看Tiny CSV Parser实现了大部分CSV解析的痛点唯一不支持的是字符串换行这一点需要注意。效率比较文章的最后作者使用Benchmark对CSVHelper和Tiny CSV Parser进行了效率比较。测试代码如下当测试100000行数据的时候当测试1000000行数据的时候从测试结果上看Tiny Csv Parser的效率比CSVHelper高很多内存占用也少很多。最终结论当不需要支持字符串换行的时候请使用Tiny Csv Parser当需要支持字符串换行的时候请使用CSVHelper原文地址: https://www.cnblogs.com/lwqlun/p/9639456.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com