【问题标题】:LinqToCSV and decimal globalizationLinqToCSV 和十进制全球化
【发布时间】:2014-05-28 11:46:24
【问题描述】:

我正在尝试使用 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;}
}

但是,这不起作用并生成此异常:

{"Value \"DataField2\" 在第 9 行的字段格式错误或 属性 \"DataFoe;d2\" 在类型 \"Record\"."}

显然它期待一个点,但我怎样才能使用逗号使它工作。

【问题讨论】:

  • 我们可以提出一个没有 LinqToCsv 的解决方案吗?
  • 嗯,很感谢您在不使用特定技术的情况下帮助我解决问题。但是我们需要编写很多 CSV 解析器(将我们的应用程序链接到很多不同的提供者)。我正在尝试使用 LinqToCSV,因为它易于使用且编写速度快,我想知道是否可以使用 LinqToCSV
  • “0,34”是货币类型的合适值吗?我会在那里尝试一些其他值。那是错字吗?或者,应该是“0.34”。
  • 它在荷兰,所以这是我的问题。
  • 您可能需要设置某种货币文化格式。

标签: c# linq csv decimal-point linqtocsv


【解决方案1】:

相信你需要在CsvFileDescription中设置FileCultureName...

CsvFileDescription fileDesc = new CsvFileDescription
        {

            FirstLineHasColumnNames = true
            FileCultureName = "nl" 
        };

【讨论】:

  • 或者直接传入FileCultureInfo
  • 第二双眼睛的永恒好处。
猜你喜欢
  • 1970-01-01
  • 2011-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
相关资源
最近更新 更多