首页 > 解决方案 > 使用微型 csv 帮助器解析 csv 时将浮点数转换为 int32

问题描述

我想知道使用微型 csv 助手解析 csv 时是否可以自动将 float 转换为 int32?使用以下代码可以轻松转换日期时间:

MapProperty(0, x => x.Date, new DateTimeConverter("yyyyMMdd"));

但 csv 中的其他列的格式为 123456.00,当我映射到 int 属性时会引发错误。谁能举例说明如何实现这一目标?谢谢

标签: c#csv

解决方案


因此,一种解决方案是定义您自己的 ITypeConverter 如下:

using TinyCsvParser.TypeConverter;
using System;

public class CustomIntConverter : ITypeConverter<int>{ 

    public bool TryConvert(string value, out int result)
    {
       try { 
            float floatValue = float.Parse(value); 
            int intValue = (int)floatValue; 
            result = intValue;
            return true; 
        } catch {
            result = default(int);
            return false;
        }

    }

    public Type TargetType { get => typeof(int); } 


}

并像这样使用它:

MapProperty(0, x => x.YourIntField, new CustomIntConverter());

推荐阅读