C#.NET:使用%converter读取CSV

C#.NET:使用%converter读取CSV,c#,filehelpers,C#,Filehelpers,我正在读一个CSV文件 Name,Score Pat,99% Chris,87% 并希望在通过FileHelpers读取文件时放弃百分号 using FileHelpers; public class PctConverter : ConverterBase { private NumberFormatInfo nfi = new NumberFormatInfo(); public PctConverter() { nfi.PercentSymbo

我正在读一个CSV文件

Name,Score
Pat,99%
Chris,87%
并希望在通过FileHelpers读取文件时放弃百分号

using FileHelpers;

public class PctConverter : ConverterBase
{
    private NumberFormatInfo nfi = new NumberFormatInfo();

    public PctConverter()
    {
        nfi.PercentSymbol = "%";
    }

    public override object StringToField(string from)
    {
        return decimal.Parse(from, NumberStyles.Percent, nfi);
    }
}

[DelimitedRecord(",")]
[IgnoreFirst]
public class Student
{
    public string Name { get; set; }
    public decimal Score { get; set; }
}

var student_file = "students.csv";
var engine = new FileHelperEngine<Student>();
engine.ErrorManager.ErrorMode = ErrorMode.SaveAndContinue;
List<Student> students = engine.ReadFileAsList(student_file);
ErrorInfo[] readingErrors = engine.ErrorManager.Errors;
使用文件助手;
公共类PCT转换器:转换器库
{
私有numberformatinfi=新NumberFormatInfo();
公共PCT转换器()
{
nfi.PercentSymbol=“%”;
}
公共覆盖对象StringToField(字符串来自)
{
返回decimal.Parse(from,numberstyle.Percent,nfi);
}
}
[分隔符记录(“,”)]
[忽略优先]
公立班学生
{
公共字符串名称{get;set;}
公共十进制分数{get;set;}
}
var student_file=“students.csv”;
var engine=new FileHelperEngine();
engine.ErrorManager.ErrorMode=ErrorMode.Save并继续;
List students=engine.ReadFileAsList(学生文件);
ErrorInfo[]readingErrors=engine.ErrorManager.Errors;

但是我的转换器不太正确。您能说明原因吗?

您需要在要转换的字段上指定转换器,而且您的转换器对我不起作用,因此我将其简化了一点:

public class PctConverter : ConverterBase
{
    public override object StringToField(string from)
    {
        return decimal.Parse(from.Replace("%", ""));
    }
}

[DelimitedRecord(",")]
[IgnoreFirst]
public class Student
{
    public string Name { get; set; }

    [FieldConverter(typeof(PctConverter))]
    public decimal Score { get; set; }
}

它现在做什么?最好说一个默认的、完全初始化的NumberFormatInfo,比如来自CurrentCulture或InvariantCulture。它们都使用%作为百分比符号。如果丢失了百分号,您想让它考虑坏格式吗?“10”是否应该引发异常?Numberstyles.Percent不存在,编译器没有告诉你吗?这就是你说的“不安静”吗?