protected DataColumnAndSchema MakeDataColumnAndSchema() { // Make a copy of the Remembering reader that later can be discarded // This to avoid to read in all tables in memory at the same time. var fullReader = new RememberingFullTableReader(_reader); fullReader.LoadAll(); var dataDict = fullReader.Data; var fields = new List <Field>(); var datacols = new List <DataColumn>(); var numCol = _colInfos.Count; for (var i = 0; i < numCol; i++) { var colInfo = _colInfos[i]; var dataName = colInfo.Name; var dataArr = dataDict[dataName]; DataColumn column; switch (dataArr) { case bool[] _: column = new DataColumn(new DataField <bool>(dataName), dataArr); break; case byte[] _: column = new DataColumn(new DataField <byte>(dataName), dataArr); break; case int[] _: column = new DataColumn(new DataField <int>(dataName), dataArr); break; case long[] _: column = new DataColumn(new DataField <long>(dataName), dataArr); break; case float[] _: column = new DataColumn(new DataField <float>(dataName), dataArr); break; case double[] _: column = new DataColumn(new DataField <double>(dataName), dataArr); break; case string[] _: column = new DataColumn(new DataField <string>(dataName), dataArr); break; default: continue; } fields.Add(column.Field); datacols.Add(column); } return(new DataColumnAndSchema(datacols, new Schema(fields))); }
public RememberingFullTableReader(RememberingFullTableReader rftr) { // Make a copy of existing data and reader _importBase = rftr._importBase; if (rftr.Data != null) { Data = new Dictionary <string, Array>(rftr.Data); } }
protected ImportTableBase() { _reader = new RememberingFullTableReader(this); }