【发布时间】:2020-10-14 07:33:06
【问题描述】:
我有一个 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”类的一部分:
.
.
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
【问题讨论】:
-
你想要的值是什么? NaN,无穷大,0.0?建议:将
weight设为字符串并以执行浮点解析的方式实现setter。 -
我认为“NaN”是最好的解决方案。 “以执行浮点解析的方式实现设置器”是什么意思?
-
愿我们有一个minimal reproducible example,一个简单的 1 或 2 列和最多 5 行的 Csv。用所说的Class表示和映射器信息。
-
用一个最小的例子编辑了这个问题。关键是,“重量”有一个不包含任何内容的字段。 (Ofc 它在真实文件中有更多内容)
-
缺失值是
null,这意味着weight应该是float?。