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

Using CsvHelper, How to map to a second column, if the value of the first column equals 0

如果第一个字段小于 0,是否可以映射到第二个字段?

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

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

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

您必须像下面那样手动转换列。

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