Exemple #1
0
        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);
        }
Exemple #2
0
        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));
        }