LinqToCSV和十进制全球化

本文关键字:全球化 十进制 LinqToCSV | 更新日期: 2023-09-27 18:05:27

我正在尝试使用LingToCSV读取csv文件,其中包含带逗号的十进制值,分隔符而不是点。

这是一行输入:

"DataField1","DataField2"
"Test", "0,34"

我用这个类来读取它:

public class Record
{
   [CsvColumn(Name = "DataField1", FieldIndex=  1)]
   string DataField1 {get;set;}
   [CsvColumn(Name = "DataField2", FieldIndex=  2, OutputFormat="C", NumberStyle=NumberStyles.Currency)]
   decimal DataField2 {get;set;}
}

然而,这不起作用,并产生了这个异常:

第9行{"Value '"DataField2'"的字段或格式错误在类型"记录"中使用属性"DataFoe;d2"。"}

显然,它期待一个点,但我如何使用逗号使它工作

LinqToCSV和十进制全球化

相信您需要在CsvFileDescription中设置FileCultureName…

CsvFileDescription fileDesc = new CsvFileDescription
        {
            FirstLineHasColumnNames = true
            FileCultureName = "nl" 
        };