如何为FileHelpers元素类的字段定义默认值

我正在尝试加载CSV文件(delims是’;’,引号是”’)。

我已成功创建了所有内容(向导工具很棒),但有一件事我无法找到解决方案。

基本上,我有一个整数(System.Int32)列。 理论上, 大多数记录在该列中将具有正整数值 。 但是,有时我可能会在该列中遇到值“N / A”。 我想要实现的是,当FileHelpers在该列中遇到“N / A”时,它会分配一个默认值(-1可以正常工作)。

有谁知道这是否可能?

PS:我可能需要为System.DateTime字段做同样的事情(有时候它也可能有“N / A”)。

想要做你想做的事情的最好方法是在这些字段上使用FieldConverter属性并创建自定义转换器类,分配你希望字段具有的默认值。

您需要创建一个inheritanceConverterBase的类,然后为两个虚方法StringToField()FieldToString()提供实现。

FieldToString()方法中,您将检查字符串是否等于“N / A”。 如果是,则返回所需的默认值。

您将需要两个不同的类,一个可以处理Int32 ,另一个可以处理DateTime

FileHelpers文档有一个如何执行此操作的示例。 链接

像布兰登说的那样你需要使用这个转换器

 // In your class [FieldConverter(typeof(NoValueConverter))] public int Number; // Te Converter public class NoValueConverter : ConverterBase { public override object StringToField(string sourceString) { if (sourceString.Trim().ToUpper() == "N/A") return -1; // or int.MinValue; else return Integer.Parse(sourceString); } public override string FieldToString(object fieldValue) { return fieldValue.ToString(); } } 

我们很高兴您喜欢精灵:)(我们正在使用一个很酷的自动检测function,以便更容易创建映射类)