首页 > 解决方案 > 缺少字段的 CsvHelper 列表

问题描述

借用这篇文章 - CSVHelper 必填字段。假设我有这个代码:

public sealed class DataMapper : CsvClassMap<DataType>
{
    public DataMapper()
    {
        Map(m => m.Field1).Name("FirstField");
        Map(m => m.Field2).ConvertUsing(m => { return 0; }); // required field
        Map(m => m.Field3).ConvertUsing(m => { return 1; }); // required field
    }
}

如果我尝试加载 csv 文件并且缺少 Field2 和 Field3,如何获取缺少字段的列表?我知道我可以检查 ConvertUsing 语句中是否存在该字段,但如果我抛出异常,我一次只能得到一个。

我查看了 HeaderValidated 和 MissingFieldFound,但是据我所知,当它们被映射时,它们并没有被这些方法处理。

有任何想法吗?

标签: c#csvhelper

解决方案


我最终添加了一个名为 Errors 的字段,并在该映射中进行了所有验证。

Map(m => m.Errors).ConvertUsing(m => { 
    // do a bunch of validation
    return "all of the errors";
});

这感觉像是重复的工作,因为我仍然需要对我的真实字段的 ConvertUsing 语句进行验证,但这很有效,结果还可以。


推荐阅读