CSVHelper 无法将空浮点值转换为字符串

CSVHelper cannot convert empty float values to string

我有一个 csv 文件,其中包含整型、字符串、布尔型和浮点型数据。问题是,有些字段是空的。当我尝试使用 csvhelper 读取 csv 文件时,出现 TypeConversion.TypeConverterException 错误。我检查了细节,看起来是因为它不能将空浮点值转换为字符串。我该如何处理?

namespace Smh
{
    class Program
    {
        static void Main(string[] args)
        {
            List<E> EList = new List<E>();
            List<E2> EList2 = new List<E2>();

            string filePath = @"D:\Visual Studio\Projects\Example\boo.csv";

            using (var reader = new StreamReader(filePath))
            using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
            {
                var example= new E();
                EList= csv.GetRecords<E>().ToList();
            }
.
.
.

我的“E”的一部分class:

.
.
 public float weight { get; set; }
.
.

和我得到的错误: https://i.postimg.cc/dVPkYDCm/image.png

csv 文件的一小部分:

id | speed | type | weight
1     40     type1   5.4
2     43     type2
3     16     type3   5.2 

不使用 ClassMap 自定义映射器的最简单解决方案, 就是把type改成float?.

public class Test{
    public int id{get;set;}
    public int speed{get;set;}
    public string type{get;set;}
    public float? weight{get;set;}
}

然后,如果您需要更改默认值,您可以添加一个 Getter Setter,这将 return Single.NaN

示例: Live Demo

public static void Main()
{
    var result = new List<Test>();
    using (var stream = new MemoryStream())
    using (var writer = new StreamWriter(stream))
    using (var reader = new StreamReader(stream))
    using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
    {
        //Csv Creation
        writer.WriteLine("id,speed,type,weight");
        writer.WriteLine("1,40,type1,5.4");
        writer.WriteLine("2,43,type2,");
        writer.WriteLine("3,16,type3,5.2");
        writer.Flush();
        stream.Position = 0;
        
        
        csv.Configuration.HasHeaderRecord = true;
        csv.Configuration.Delimiter = ",";
        
        result = csv.GetRecords<Test>().ToList();           
        
    }
    result.Dump();
}