c# - 是否有用于将具有随机列顺序的 CSV 映射到已定义属性的代码模式?

标签 c# csv design-patterns

我有一个从各种来源传送到我的应用程序的 CSV。 CSV 将始终具有相同编号的列,并且列的标题值将始终相同。

但是,列的顺序可能并不总是相同。

第 1 天 CSV 可能如下所示

ID,FirstName,LastName,Email
1,Johh,Lennon,jlennon@applerecords.com
2,Paul,McCartney,macca@applerecords.com

第 2 天 CSV 可能如下所示

Email,FirstName,ID,LastName
resident1@friarpark.com,George,3,Harrison
ringo@allstarrband.com,Ringo,4,Starr

我想读取每个文件的标题行,并有一个简单的机制将数据的每个“列”与我在类中定义的关联属性相关联。

我知道我可以使用选择语句来解决这个问题,但这似乎是一种“糟糕”的处理方式。

有没有一种在运行时使用字典或类将“列”映射到属性的简单方法?

最佳答案

使用字典将列标题文本映射到列位置。 列标题文本到对象属性的硬编码映射。

例子:

// Parse first line of text to add column heading strings and positions to your dictionary
...

// Parse data row into an array, indexed by column position
...

// Assign data to object properties
x.ID = row[myDictionary["ID"]];
x.FirstName = row[myDictionary["FirstName"]];
...

关于c# - 是否有用于将具有随机列顺序的 CSV 映射到已定义属性的代码模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24293646/

相关文章:

json - 使用 jq 将 boolean 值添加到 csv 数组

c# - 从 Python 移植到 C#

c# - 在 C# 中使用任意位位置和长度跨字节边界提取值

java - 将数据添加/附加到现有 CSV 文件的特定行/单元格

python - 传递已解析的参数并不有趣

java - 什么是单例的替代品

cocoa - Apple Cocoa 框架的设计模式 : MVC, MVP、Passive View...Apple 将走向何方?

c# - ASP.NET Core 404 响应中的 Service Fabric 反向代理集成

c# - 如何更改 BingMaps for Silverlight 中自定义图钉内元素的大小

mysql从包含换行符的csv加载数据