public static string ToTextAll <TRec>(IEnumerable <TRec> records, ChoCSVRecordConfiguration configuration = null, TraceSwitch traceSwitch = null) where TRec : class { if (records == null) { return(null); } if (typeof(DataTable).IsAssignableFrom(typeof(TRec))) { StringBuilder csv = new StringBuilder(); foreach (var dt in records.Take(1)) { configuration = configuration == null ? new ChoCSVRecordConfiguration().Configure(c => c.WithFirstLineHeader()) : configuration; using (var w = new ChoCSVWriter(csv, configuration)) w.Write(dt); } return(csv.ToString()); } else if (typeof(IDataReader).IsAssignableFrom(typeof(TRec))) { StringBuilder csv = new StringBuilder(); foreach (var dt in records.Take(1)) { configuration = configuration == null ? new ChoCSVRecordConfiguration().Configure(c => c.WithFirstLineHeader()) : configuration; using (var w = new ChoCSVWriter(csv, configuration)) w.Write(dt); } return(csv.ToString()); } using (var stream = new MemoryStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream)) using (var parser = new ChoCSVWriter <TRec>(writer, configuration) { TraceSwitch = traceSwitch == null ? ChoETLFramework.TraceSwitch : traceSwitch }) { parser.Write(records); writer.Flush(); stream.Position = 0; return(reader.ReadToEnd()); } }
public static string ToText <TRec>(IEnumerable <TRec> records, ChoCSVRecordConfiguration configuration = null) where TRec : class { using (var stream = new MemoryStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream)) using (var parser = new ChoCSVWriter <TRec>(writer, configuration)) { parser.Write(records); writer.Flush(); stream.Position = 0; return(reader.ReadToEnd()); } }
public static void Write(ChoCSVWriter <dynamic> w, IDataReader dr) { ChoGuard.ArgumentNotNull(w, "Writer"); ChoGuard.ArgumentNotNull(dr, "DataReader"); DataTable schemaTable = dr.GetSchemaTable(); w.Configuration.UseNestedKeyFormat = false; w.Configuration.CSVRecordFieldConfigurations.Clear(); int ordinal = 0; if (w.Configuration.CSVRecordFieldConfigurations.IsNullOrEmpty()) { string colName = null; Type colType = null; foreach (DataRow row in schemaTable.Rows) { colName = row["ColumnName"].CastTo <string>(); colType = row["DataType"] as Type; //if (!colType.IsSimple()) continue; w.Configuration.CSVRecordFieldConfigurations.Add(new ChoCSVRecordFieldConfiguration(colName, ++ordinal) { FieldType = colType }); } } var ordinals = w.Configuration.CSVRecordFieldConfigurations.ToDictionary(c => c.Name, c => dr.HasColumn(c.Name) ? dr.GetOrdinal(c.Name) : -1); while (dr.Read()) { dynamic expando = new ExpandoObject(); var expandoDic = (IDictionary <string, object>)expando; foreach (var fc in ordinals) { expandoDic.Add(fc.Key, fc.Value == -1 ? null : dr[fc.Value]); } w.Write(expando); } }
public static string ToTextAll <TRec>(IEnumerable <TRec> records, ChoCSVRecordConfiguration configuration = null, TraceSwitch traceSwitch = null) where TRec : class { using (var stream = new MemoryStream()) using (var reader = new StreamReader(stream)) using (var writer = new StreamWriter(stream)) using (var parser = new ChoCSVWriter <TRec>(writer, configuration) { TraceSwitch = traceSwitch == null ? ChoETLFramework.TraceSwitch : traceSwitch }) { parser.Write(records); writer.Flush(); stream.Position = 0; return(reader.ReadToEnd()); } }
public static void Write(ChoCSVWriter <dynamic> w, DataTable dt) { ChoGuard.ArgumentNotNull(w, "Writer"); ChoGuard.ArgumentNotNull(dt, "DataTable"); DataTable schemaTable = dt; w.Configuration.UseNestedKeyFormat = false; int ordinal = 0; if (w.Configuration.CSVRecordFieldConfigurations.IsNullOrEmpty()) { string colName = null; Type colType = null; foreach (DataColumn col in schemaTable.Columns) { colName = col.ColumnName; colType = col.DataType; //if (!colType.IsSimple()) continue; w.Configuration.CSVRecordFieldConfigurations.Add(new ChoCSVRecordFieldConfiguration(colName, ++ordinal) { FieldType = colType }); } } foreach (DataRow row in dt.Rows) { dynamic expando = new ExpandoObject(); var expandoDic = (IDictionary <string, object>)expando; foreach (var fc in w.Configuration.CSVRecordFieldConfigurations) { expandoDic.Add(fc.Name, row[fc.Name]); } w.Write(expando); } }