gpt4 book ai didi

c# - 使用 C# 将未知大小的 CSV 转换为自定义对象

转载 作者:太空宇宙 更新时间:2023-11-03 20:43:34 25 4
gpt4 key购买 nike

我正在尝试从我的客户自定义软件中导入一个文件。该文件基本上是一个 csv 文件,其中包含一些自定义转义字符。我正在逐行读取文件,然后将每一行拆分为一个字符串 []。然后我将每个元素分配给自定义对象中的一个字段。例如:

Person.Name = line[0];
Person.Age = line[1];
Person.Height = line[2];

等问题是,我导入的一些文件来自旧版本的应用程序,不包含所有字段。所以这一行

Person.Height = line[2];

出错是因为 line.Length = 2 而不是 3。

是否有解决此问题的“干净”方法?我现在通过在每次赋值之前写一个 if 语句来确保行 [x] 有效来解决这个问题,但这对我来说似乎很笨拙。

最佳答案

我有几个建议,假设您没有解析每一滴性能都很重要的巨大 CSV。

我使用的一种方法是在您实际开始处理数据之前执行一个步骤,确保文件格式一致。在您的情况下,这意味着扫描每一行以确定是否所有列都存在,如果不存在,则为缺失数据插入默认值。

这有助于将“清理”代码与数据处理分开。这实际上需要更多的编码,并且从性能的角度来看会更慢(因为您实际上是在解析文件两次),但可以帮助您的代码更容易阅读和调试,因为您将它分成两个单独的事件。

另一种方法是使用第三方库,如 LINQtoCSV负责为您标记“可为空”的列。然后,您可以将列作为命名属性而不是索引来引用。

关于c# - 使用 C# 将未知大小的 CSV 转换为自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1685118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com