You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Idid not find any property to instruct how to convert dates in my flat file to a property of time DateTime and when I tried to read the file, an exception was thrown converting 20170712 to type DateTime.
public class BDIHeader
{
public int Tipo { get; set; }
public string NomeArquivo { get; set; }
public string Origem { get; set; }
public int Destino { get; set; }
public DateTime DataGeracao { get; set; }
public DateTime DataPregao { get; set; }
public string HoraMinuto { get; set; }
}
public sealed class BDIHeaderLayout : FixedLayout<BDIHeader>
{
public BDIHeaderLayout()
{
this.WithMember(x => x.Tipo, c => c.WithLength(2))
.WithMember(x => x.NomeArquivo, c => c.WithLength(8))
.WithMember(x => x.Origem, c => c.WithLength(8))
.WithMember(x => x.Destino, c => c.WithLength(4))
.WithMember(x => x.DataGeracao, c => c.WithLength(8))
.WithMember(x => x.DataPregao, c => c.WithLength(8))
.WithMember(x => x.HoraMinuto, c => c.WithLength(4));
}
}
public void Read()
{
//
var factory = new FixedLengthFileEngineFactory();
using (var stream = new FileInfo(enderecoArquivoBDI).Open(FileMode.Open, FileAccess.Read, FileShare.Read))
{
// If using attribute mapping, pass an array of record types
// rather than layout instances
var layouts = new ILayoutDescriptor<IFixedFieldSettingsContainer>[]
{
new BDIHeaderLayout(),new BDIIndiceLayout()
};
var flatFile = factory.GetEngine(layouts,
line =>
{
// For each line, return the proper record type.
// The mapping for this line will be loaded based on that type.
// In this simple example, the first character determines the
// record type.
if (String.IsNullOrEmpty(line) || line.Length < 1) return null;
switch (line.Substring(0, 2))
{
case "00":
return typeof(BDIHeader);
//case "01":
// return typeof(BDIIndice);
//case "02":
// return typeof(BDINegociosPapelLayout);
//case "99":
// return typeof(BDITrailerLayout);
}
return null;
});
flatFile.Read(stream);
var header = flatFile.GetRecords<BDIHeader>().FirstOrDefault();
//var indices = flatFile.GetRecords<BDIIndice>().ToList();
//var negocios = flatFile.GetRecords<BDINegociosPapelLayout>();
//var trailer = flatFile.GetRecords<BDITrailer>().FirstOrDefault();
}
}
line being read
00BDIN9999BOVESPA 999920170713201707131807
The text was updated successfully, but these errors were encountered:
I really think we need something like WithStringNormalizer but it's an action where we can convert the raw value to the property type... This would allow us to do conversions for boolean values and dates much much easier.
Idid not find any property to instruct how to convert dates in my flat file to a property of time DateTime and when I tried to read the file, an exception was thrown converting 20170712 to type DateTime.
line being read
00BDIN9999BOVESPA 999920170713201707131807
The text was updated successfully, but these errors were encountered: