c# - CsvHelper - 由于括号,无法将类对象名称与 csv 标头名称匹配
问题描述
在带有 .NET Core 2.2 的 Visual Studio 2019 中使用 CsvHelper。
我的 csv 文件的标题名称中包含括号。我无法控制此源 csv 文件的内容。
根据https://joshclose.github.io/CsvHelper/getting-started上的入门文档,如果您的类属性名称与 csv 文件头名称匹配,我们无需任何配置即可读取该文件。但是括号不能用于 C# 中的类属性名称。
有没有办法解决这个问题,所以我可以使我的类属性名称与包含括号的标题名称匹配?如果没有,我如何指导 Csvhelper 正确处理这个问题?该文档仅涉及调整小写与大写的名称。
解决方案
从文档中:
使用配置
PrepareHeaderForMatch
,我们能够更改标头匹配对属性名称进行的方式。标头和属性名称都通过PrepareHeaderForMatch
函数运行。当读者需要找到要为标题设置的属性时,它们现在将匹配。您可以使用此功能执行其他操作,例如删除空格或其他字符。
所以(如果只需要去掉括号就可以匹配,否则,做你自己的逻辑):
using (var reader = new StreamReader("path\\to\\file.csv"))
using (var csv = new CsvReader(reader))
{
csv.Configuration.PrepareHeaderForMatch = (string header, int index) =>
header.Replace("(","").Replace(")","");
var records = csv.GetRecords<Foo>();
}
推荐阅读
- javascript - 如何使用 chrome 扩展控制 youtube 视频?
- javascript - ToDataURL 输出 Webp 图片
- python - 在没有 mathplotlib 缩放值的情况下以灰度显示像素
- android - Android AOSP 主构建失败!失败:out/soong/.primary/soong-ui-build/test/test.passed
- android - 插件对讲更新到最新版本的科尔多瓦错误在构建/运行
- prometheus - 使用来自其他变量选择的 grafana 变量依赖项(使用 prometheus)
- java - Spring Boot-Log4J2:有什么方法可以将 application.yml 中的值用于 JDBC appender?
- ios - 使用 evaluateJavascript 方法在 WKWebview 上设置本地图像
- installation - 当我尝试安装 Cypress 时显示错误
- css - 为什么我的 nth-child 覆盖不能与我的引导网格一起使用?