从复杂的 CSV 字段创建对象列表



真的不是想在这里创建"hacky"代码,但我真的不确定最好的方法。

我的公司采用了一项新功能,使用 CSV 作为我们技术含量较低的客户的数据源,虽然大多数都非常简单,但我们有几个领域可能会下降......

现在我有一个字段"产品",其标题值为:

ID|姓名|颜色|尺寸|数量|零售价|净价|税务|总计|产品图片|品牌|Custom_Field_1|Custom_Field_2|Custom_Field_3|Custom_Field_4|Custom_Field_5|Custom_Field_6|Custom_Field_7|Custom_Field_8|Custom_Field_9|Custom_Field_10|Custom_Field_11|Custom_Field_12|Custom_Field_13|Custom_Field_14|Custom_Field_15|Custom_Field_16|Custom_Field_17|Custom_Field_18|Custom_Field_19|Custom_Field_20

在这个字段中,它可以包含多个产品,所有产品都通过"|"分隔 经过一些初步测试后,我创建了一个包含 38 个值的字符串集合,其中 38 个值对应于标头值中的各个项目。

字段值:68977|劳拉|||1|245.00|225|20.00|245.00|/上传/图片/产品/image_main/lara.jpg|捆 麦克拉伦|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||68978|瞪羚|||1|375.00|355|20.00|375.00|/上传/图片/产品/image_main/瞪羚.jpg|卡拉 米汉伦敦|

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

如您所见,有些值可以是"空的",但通过拆分仍然会中断。

我真的在努力找出创建健壮代码块的最佳方法。

示例代码块:

public static List<Model.DataAPI.Product> ModelToCollection(CSVOrder source,
string shipment_id)
{
var collection = new List<Model.DataAPI.Product>();
if (!string.IsNullOrWhiteSpace(source.Products))
{
//ID|Name|Color|Size|Quantity|RetailPrice|Net|Tax|Total|ProductImage|Brand|Custom_Field_1|Custom_Field_2|Custom_Field_3|Custom_Field_4|Custom_Field_5|Custom_Field_6|Custom_Field_7|Custom_Field_8|Custom_Field_9|Custom_Field_10|Custom_Field_11|Custom_Field_12|Custom_Field_13|Custom_Field_14|Custom_Field_15|Custom_Field_16|Custom_Field_17|Custom_Field_18|Custom_Field_19|Custom_Field_20
var productStringValues = Strings.SplitString(source.Products, "|".ToCharArray());
var count = productStringValues.Count;
} 
}

唯一浮现在脑海中的是创建一个 38 倍的集合,但感觉真的很"笨拙"。

有什么想法吗?

非常感谢,

看起来您正在将"产品"作为由管道符号分隔的单个数据项字符串进行检索。

但是,当您获得"产品">

时,您看到的是"产品"的分隔列表,其数据项由管道符号分隔。当您获取所有这些数据(字段中的所有"产品")并使用管道符号进行拆分时,您将获得所有"产品"的大量数据项列表 - 而不是每个产品。

请注意这里的细微差别;您需要通过分隔符(可能是回车符,也许是其他内容)检索每个"产品"以获取"产品"列表。然后,对于每个"产品",您可以使用管道分隔符获取它拥有的 38 个数据项中的每一个。

然后,您可以将每个"产品"添加到列表中。

最新更新