【发布时间】:2017-03-11 06:27:45
【问题描述】:
如果第一个字段小于 0,有没有办法映射到第二个字段?
例如,如果您正在映射包含 foo 和 bar 列的 csv 文件:
Map(m => m.Price).Name("foo");
如果foo 列等于0,我们是否可以将Price 映射到bar 列的值。
【问题讨论】:
标签: c# asp.net asp.net-mvc csv csvhelper
如果第一个字段小于 0,有没有办法映射到第二个字段?
例如,如果您正在映射包含 foo 和 bar 列的 csv 文件:
Map(m => m.Price).Name("foo");
如果foo 列等于0,我们是否可以将Price 映射到bar 列的值。
【问题讨论】:
标签: c# asp.net asp.net-mvc csv csvhelper
您必须手动转换列,如下所示。
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 模型映射到其他模型的代码。
【讨论】: