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

C# 使用CsvHelper,如果第一列的值等于0,如何映射到第二列,c#,asp.net,asp.net-mvc,csv,csvhelper,C#,Asp.net,Asp.net Mvc,Csv,Csvhelper,如果第一个字段小于0,是否有方法映射到第二个字段 例如,如果要映射具有列foo和bar的csv文件: Map(m => m.Price).Name("foo"); 如果列foo等于0,那么我们可以将Price映射到bar列的值 您必须手动转换列,如下所示 Map(x => x.Price) .Name("foo") .ConvertUsing(row => { var fooValue = row.GetField<decimal

如果第一个字段小于0,是否有方法映射到第二个字段

例如,如果要映射具有列
foo
bar
的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;
    });
Map(x=>x.Price)
.名称(“foo”)
.ConvertUsing(行=>
{
var fooValue=row.GetField(“foo”);
如果(fooValue==0m)
{
返回row.GetField(“bar”);
}
返回值;
});

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

感谢您解决了我的问题,并提供了建议。有一个单独的CSV模型映射到我的主模型是有意义的。