使用CsvHelper,如果第一列的值等于0,如何映射到第二列

时间:2016-10-28 11:06:53

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

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

例如,如果要映射包含foo列和bar列的csv文件:

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

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

1 个答案:

答案 0 :(得分:3)

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

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模型映射到其他模型。