private InMemoryTable ChartDataToTable(ChartData data) { var ts = new TableStructure(); ts.AddColumn(Texts.Get("s_label"), new DbTypeString()); foreach (var item in data.ValueDefs) { ts.AddColumn(item.Label, new DbTypeFloat { Bytes = 8 }); } var res = new InMemoryTable(ts); foreach (var item in data.Items) { var rec = new ArrayDataRecord(ts); rec.SeekValue(0); rec.SetString(item.Label); for (int i = 0; i < data.ValueDefs.Length; i++) { rec.SeekValue(i + 1); rec.SetDouble(item.Values[i]); } res.Rows.Add(rec); } return(res); }
public InMemoryTable GetTable(bool wantdata) { List <DataRecord> records = new List <DataRecord>(); foreach (string row in EnumRows()) { records.Add(FieldAnalyser.AnalyseRecord(row)); } var ts = new TableStructure(); Dictionary <string, int> colindexes = new Dictionary <string, int>(); // get column collection foreach (var rec in records) { foreach (var fld in rec.Fields) { if (colindexes.ContainsKey(fld.Name)) { continue; } var col = new ColumnStructure(); col.ColumnName = fld.Name; col.DataType = new DbTypeString(); colindexes[fld.Name] = ts._Columns.Count; ts._Columns.Add(col); } } if (!wantdata) { return(new InMemoryTable(ts)); } var recs = new List <ArrayDataRecord>(); foreach (var rec in records) { var row = new ArrayDataRecord(ts); foreach (var fld in rec.Fields) { row.SeekValue(colindexes[fld.Name]); row.SetString(fld.Value); } recs.Add(row); } return(InMemoryTable.FromEnumerable(ts, recs)); }