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

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

如果第一个字段小于 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 模型映射到其他模型的代码。

关于c# - 使用 CsvHelper,如果第一列的值等于 0,如何映射到第二列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40303776/

相关文章:

c# - 将用户信息保存在 MVC 4 ASP.NET 中的自定义成员资格和角色提供者中

javascript - 将对象数组从 JavaScript 发送到 C# Controller

c# - 列出用户具有读取权限的文件 (ASP.NET)

c# - 动态正则表达式生成,用于数据馈送中可预测的重复字符串模式

c# - 将 opentext 更改为 opendialog

C# + Pl/SQL 存储过程中没有参数的问题

javascript - Asp 和 JavaScript 错误 : Message: Expected ')'

c# - 带有参数的 ASP.NET MVC 授权属性

c# - 在 Global.asax 的 Application_Start 方法中访问缓存时出错

c# - MVC linq to sql 求和