Filehelpers:每行有多个分隔符?
Filehelpers: Multiple delimiters in each row?
当一个文件的每行有多个分隔符时,FileHelpers可以解析成一个对象吗?下面是我需要使用 FileHelpers 从第三方数据提供程序解析的示例行,如果可能的话:
ItemID=1000|VerificationResult=ERROR|VerificationResultCode=-101|VerificationResultDetail=Duplicate ItemID|ProfileID=|ACHRouting=|ACHAccount=|LastFourCC=4444|InvoiceNo=731-021-36-572|DateTime=1/20/2016 1:04:30 PM|CustomField1=|CustomField2=
如果数据提供者只使用竖线分隔符,那么使用 FileHelpers 就很简单了,但是正如您所见,每个 key/value 对之间都有一个“=”,然后每对之间有竖线分隔符...感叹
属性允许您为给定字段指定不同的分隔符。
另一种方法是为键值对编写您自己的转换器。
public class KeyValuePairConverter : ConverterBase
{
private String _KeyName;
public KeyValuePairConverter(String keyName)
{
// needs a parameter to get the export correct
_KeyName = keyName;
}
public override object StringToField(string from)
{
// return everything after the last equals
// (you could choose to validate the first part of the string against the _KeyName)
return from.Substring(from.LastIndexOf('=') + 1);;
}
public override string FieldToString(object fieldValue)
{
return String.Format("{0}={1}", _KeyName, fieldValue);
}
}
然后您的字段定义将如下所示
[FieldConverter(typeof(KeyValuePairConverter), "ItemID")]
public String ItemID;
当一个文件的每行有多个分隔符时,FileHelpers可以解析成一个对象吗?下面是我需要使用 FileHelpers 从第三方数据提供程序解析的示例行,如果可能的话:
ItemID=1000|VerificationResult=ERROR|VerificationResultCode=-101|VerificationResultDetail=Duplicate ItemID|ProfileID=|ACHRouting=|ACHAccount=|LastFourCC=4444|InvoiceNo=731-021-36-572|DateTime=1/20/2016 1:04:30 PM|CustomField1=|CustomField2=
如果数据提供者只使用竖线分隔符,那么使用 FileHelpers 就很简单了,但是正如您所见,每个 key/value 对之间都有一个“=”,然后每对之间有竖线分隔符...感叹
另一种方法是为键值对编写您自己的转换器。
public class KeyValuePairConverter : ConverterBase
{
private String _KeyName;
public KeyValuePairConverter(String keyName)
{
// needs a parameter to get the export correct
_KeyName = keyName;
}
public override object StringToField(string from)
{
// return everything after the last equals
// (you could choose to validate the first part of the string against the _KeyName)
return from.Substring(from.LastIndexOf('=') + 1);;
}
public override string FieldToString(object fieldValue)
{
return String.Format("{0}={1}", _KeyName, fieldValue);
}
}
然后您的字段定义将如下所示
[FieldConverter(typeof(KeyValuePairConverter), "ItemID")]
public String ItemID;