static void ConfigFirstApproachReadAsTypedRecords() { ChoFixedLengthRecordConfiguration config = new ChoFixedLengthRecordConfiguration(); config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("Id", 0, 8) { FieldType = typeof(int) }); config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("Name", 8, 10) { FieldType = typeof(string) }); EmployeeRecSimple row = null; using (var stream = new MemoryStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream)) using (var parser = new ChoFixedLengthReader <EmployeeRecSimple>(reader, config).WithFirstLineHeader()) { writer.WriteLine("Id Name "); writer.WriteLine("1 Carl "); writer.WriteLine("2 Mark "); writer.Flush(); stream.Position = 0; while ((row = parser.Read()) != null) { Console.WriteLine(row.ToStringEx()); } } }
static void CodeFirstWithDeclarativeApproach() { object row = null; using (var stream = new MemoryStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream)) using (var parser = new ChoFixedLengthReader <CreditBalanceRecord>(reader)) { writer.WriteLine("Account LastName FirstName Balance CreditLimit AccountCreated Rating "); writer.WriteLine("101 Reeves Keanu 9315.45 10000.00 1/17/1998 A "); writer.Flush(); stream.Position = 0; while ((row = parser.Read()) != null) { Console.WriteLine(row.ToStringEx()); } } //using (var stream = new MemoryStream()) //using (var reader = new StreamReader(stream)) //using (var writer = new StreamWriter(stream)) //{ // writer.WriteLine("Account LastName FirstName Balance CreditLimit AccountCreated Rating "); // writer.WriteLine("101 Reeves Keanu 9315.45 10000.00 1/17/1998 A "); // writer.Flush(); // stream.Position = 0; // foreach (var item in new ChoFixedLengthReader<CreditBalanceRecord>(reader)) // { // Console.WriteLine(item.ToStringEx()); // } //} }
static void DynamicApproach() { object row = null; using (var stream = new MemoryStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream)) using (var parser = new ChoFixedLengthReader(reader) .WithFirstLineHeader() .WithField("Account", 0, 8, fieldType: typeof(int)) .WithField("LastName", 8, 16) .WithField("FirstName", 24, 16) .WithField("Balance", 40, 12, fieldType: typeof(double)) .WithField("CreditLimit", 52, 14, fieldType: typeof(double)) .WithField("AccountCreated", 66, 16, fieldType: typeof(DateTime)) .WithField("Rating", 82, 7)) { writer.WriteLine("Account LastName FirstName Balance CreditLimit AccountCreated Rating "); writer.WriteLine("101 Reeves Keanu 9315.45 10000.00 1/17/1998 A "); writer.WriteLine("102 Tom Mark 9315.45 15000.00 12/17/2000 A "); writer.Flush(); stream.Position = 0; while ((row = parser.Read()) != null) { Console.WriteLine(row.ToStringEx()); } } }
static void MultiLineTest() { object row = null; using (var parser = new ChoFixedLengthReader("Emp.csv").WithFirstLineHeader().WithField("Id", 0, 8).WithField("Name", 8, 10, true)) { while ((row = parser.Read()) != null) { Console.WriteLine(row.ToStringEx()); } } }
static void MultiLineTest() { object row = null; using (var parser = new ChoFixedLengthReader("Emp.txt").WithFirstLineHeader().WithField("Id", 0, 8).WithField("Name", 8, 10)) { parser.Configuration.MayContainEOLInData = true; while ((row = parser.Read()) != null) { Console.WriteLine(row.ToStringEx()); } } }
static void DefaultValueUsedViaConfigFirstApproach() { ChoFixedLengthRecordConfiguration config = new ChoFixedLengthRecordConfiguration(); config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("Id", 0, 3) { FieldType = typeof(int) }); config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("Name", 3, 5) { FieldType = typeof(string) }); config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("JoinedDate", 8, 10) { FieldType = typeof(DateTime), DefaultValue = "10/10/2010" }); config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("Salary", 18, 10) { FieldType = typeof(ChoCurrency) }); config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("IsActive", 28, 1) { FieldType = typeof(bool) }); config.FixedLengthRecordFieldConfigurations.Add(new ChoFixedLengthRecordFieldConfiguration("Status", 29, 1) { FieldType = typeof(char) }); config.ErrorMode = ChoErrorMode.ReportAndContinue; ExpandoObject row = null; using (var stream = new MemoryStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream)) using (var parser = new ChoFixedLengthReader(reader, config)) { writer.WriteLine("001Carl 08/12/2016100,000 0F"); writer.WriteLine("002MarkS13/01/2010500,000 1C"); writer.Flush(); stream.Position = 0; while ((row = parser.Read()) != null) { Console.WriteLine(row.ToStringEx()); } } }
static void DefaultValueUsedViaCodeFirstApproach() { EmployeeRecSimple row = null; using (var stream = new MemoryStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream)) using (var parser = new ChoFixedLengthReader <EmployeeRecSimple>(reader)) { writer.WriteLine("001Carl 08/12/2016$100,000 0F"); writer.WriteLine("002MarkS01/01/2010$500,000 1C"); writer.Flush(); stream.Position = 0; while ((row = parser.Read()) != null) { Console.WriteLine(row.ToStringEx()); } } }
static void QuickTest() { object row = null; using (var stream = new MemoryStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream)) using (var parser = new ChoFixedLengthReader <EmployeeRecWithCurrency>(reader).WithFirstLineHeader()) { writer.WriteLine("Id Name "); writer.WriteLine("1 Carl "); writer.WriteLine("2 Mark "); writer.Flush(); stream.Position = 0; while ((row = parser.Read()) != null) { Console.WriteLine(row.ToStringEx()); } } }
static void CodeFirstWithDeclarativeApproachRead() { EmployeeRec row = null; using (var stream = new MemoryStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream)) using (var parser = new ChoFixedLengthReader <EmployeeRec>(reader).WithFirstLineHeader()) { writer.WriteLine("Id Name "); writer.WriteLine("1 Carl "); writer.WriteLine("2 Mark "); writer.Flush(); stream.Position = 0; while ((row = parser.Read()) != null) { Console.WriteLine(row.ToStringEx()); } } }