MatrixTable is a type (class) for in-memory representation of data tables just like DataTable of the .net framework (ADO.net). MatrixTable has but a much simplified data structure compared to DataTable with primary focus on mathematical (or analytical) table functions rather than typical sql-based data operations like inserts and updates.
With the following methods of the MatrixTable class, a DataTable can easily be converted into a MatrixTable, and vice versa:
// From DataTable to MatrixTable public static MatrixTable Import_from_DataTable(DataTable dtable, MetaData md, string TextReplaceNull = "NULL", int NumReplaceNull = 0, double KeyFigReplaceNull = 0) // From MatrixTable to DataTable public static DataTable Export_To_DataTable(MatrixTable tbl) |
You can also find open-source DataTable extensions (c#/.net, license: GPL) that include methods for these conversions at CodePlex.
Converting DataTable to MatrixTable
In order to convert a DataTable object into a MatrixTable all the fields (columns) of DataTable must be predefined in MetaData with proper field types.
See the c# code example below:
using FinaquantProtos; using System.Data; // First, create a DataTable object // For a helpful reference see: http://www.dotnetperls.com/datatable DataTable DTbl = new DataTable(); DTbl.Columns.Add("product", typeof(string)); DTbl.Columns.Add("model", typeof(int)); DTbl.Columns.Add("date", typeof(DateTime)); DTbl.Columns.Add("sales", typeof(double)); // Add some rows to DataTable DTbl.Rows.Add("Computer", 2010, DateTime.Now, 25000.0); DTbl.Rows.Add("Telephone", 2008, new DateTime(2010, 8, 30), 8000.0); DTbl.Rows.Add("Camera", 2012, new DateTime(2012, 9, 1), 34000.0); // define all fields of DataTable in meta data MetaData md = MetaData.CreateEmptyMetaData(); MetaData.AddNewField(md, "product", FieldType.TextAttribute); MetaData.AddNewField(md, "model", FieldType.IntegerAttribute); MetaData.AddNewField(md, "date", FieldType.DateAttribute); MetaData.AddNewField(md, "sales", FieldType.KeyFigure); // convert DataTable to MatrixTable MatrixTable MTbl = MatrixTable.Import_from_DataTable(DTbl, md); // view MatrixTable MatrixTable.View_MatrixTable(MTbl, "MatrixTable converted from DataTable"); |
Converting MatrixTable to DataTable
Quite straightforward, see the code example below:
// make some changes in MatrixTable MTbl.SetFieldValue(FieldName: "product", RowInd: 0, FieldValue: "Laptop"); MTbl.SetFieldValue(FieldName: "model", RowInd: 1, FieldValue: 1999); // convert MatrixTable to DataTable DTbl = MatrixTable.Export_To_DataTable(MTbl); // view DataTable DTbl.FQ_ViewTable("DataTable converted from MatrixTable"); |
You van create dataset manually … http://csharp.net-informations.com/dataset/csharp-dynamic-dataset.htm C# Dataset dynamic creation.
Steve.