【问题标题】:Using CsvHelper, How to map to a second column, if the value of the first column equals 0使用 CsvHelper,如果第一列的值等于 0,如何映射到第二列
【发布时间】:2017-03-11 06:27:45
【问题描述】:

如果第一个字段小于 0,有没有办法映射到第二个字段?

例如,如果您正在映射包含 foobar 列的 csv 文件:

Map(m => m.Price).Name("foo");

如果foo 列等于0,我们是否可以将Price 映射到bar 列的值。

【问题讨论】:

    标签: c# asp.net asp.net-mvc csv csvhelper


    【解决方案1】:

    您必须手动转换列,如下所示。

    Map(x => x.Price)
        .Name("foo")
        .ConvertUsing(row =>
        {
            var fooValue = row.GetField<decimal>("foo");
    
            if (fooValue == 0m)
            {
                return row.GetField<decimal>("bar");
            }
            return fooValue;
        });
    

    也就是说,我认为您不应该使用 CsvHelper 进行条件映射。理想情况下,您的 CSV 模型和要映射到的另一个模型都有一个映射。然后拥有将您的 CSV 模型映射到其他模型的代码。

    【讨论】:

    • 感谢您解决我的问题和建议。有一个单独的 CSV 模型映射到我的主模型是有意义的。
    猜你喜欢
    • 2013-03-03
    • 2022-01-17
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 2021-07-17
    相关资源
    最近更新 更多