public static void Main()
var data = new System.Data.DataTable("data");
data.Columns.Add("Id", typeof(int));
data.Columns.Add("Value", typeof(string));
for (var i = 0; i < 100; i++)
row["Value"] = "DataBlob" + i;
var data2 = new System.Data.DataTable("data2");
data2.Columns.Add("Id", typeof(int));
data2.Columns.Add("Description", typeof(string));
for (var i = 0; i < 100; i++)
var row = data2.NewRow();
row["Description"] = "Data Description " + i;
System.Data.DataTable[] tables = new System.Data.DataTable[] { data, data2 };
SaveToFile(tables, "datatable.data");
System.Data.DataSet set = new System.Data.DataSet();
set.WriteXml("datatable.xml");
Console.WriteLine("datatable.data File Size:" + new FileInfo("datatable.data").Length + " Bytes");
Console.WriteLine("datatable.xml File Size:" + new FileInfo("datatable.xml").Length + " Bytes");
System.Data.DataTable[] result = LoadFromFile("datatable.data");
public static void Main()
var data = new System.Data.DataTable("data");
data.Columns.Add("Id", typeof(int));
data.Columns.Add("Value", typeof(string));
for (var i = 0; i < 100; i++)
row["Value"] = "DataBlob" + i;
var data2 = new System.Data.DataTable("data2");
data2.Columns.Add("Id", typeof(int));
data2.Columns.Add("Description", typeof(string));
for (var i = 0; i < 100; i++)
var row = data2.NewRow();
row["Description"] = "Data Description " + i;
System.Data.DataTable[] tables = new System.Data.DataTable[] { data, data2 };
SaveToFile(tables, "datatable.data");
System.Data.DataSet set = new System.Data.DataSet();
set.WriteXml("datatable.xml");
public static void Main()
var data = new System.Data.DataTable("data");
data.Columns.Add("Id", typeof(int));
data.Columns.Add("Value", typeof(string));
for (var i = 0; i < 100; i++)
row["Value"] = "DataBlob" + i;
var data2 = new System.Data.DataTable("data2");
data2.Columns.Add("Id", typeof(int));
data2.Columns.Add("Description", typeof(string));
for (var i = 0; i < 100; i++)
var row = data2.NewRow();
row["Description"] = "Data Description " + i;
System.Data.DataTable[] tables = new System.Data.DataTable[] { data, data2 };
SaveToFile(tables, "datatable.data");
System.Data.DataSet set = new System.Data.DataSet();
set.WriteXml("datatable.xml");
Console.WriteLine("datatable.data File Size:" + new FileInfo("datatable.data").Length + " Bytes");
Console.WriteLine("datatable.xml File Size:" + new FileInfo("datatable.xml").Length + " Bytes");
System.Data.DataTable[] result = LoadFromFile("datatable.data");
Console.WriteLine("datatable.data File Size:" + new FileInfo("datatable.data").Length + " Bytes");
Console.WriteLine("datatable.xml File Size:" + new FileInfo("datatable.xml").Length + " Bytes");
System.Data.DataTable[] result = LoadFromFile("datatable.data");
for (var i=0;i<data.Rows.Count;i++)
if (data.Rows[i]["Id"].ToString() != result[0].Rows[i]["Id"].ToString() ||
data.Rows[i]["Value"].ToString()!= result[0].Rows[i]["Value"].ToString())
Console.WriteLine("Data 1 Not Same Expected:" + data.Rows[i]["Id"].ToString() + " but was:" + result[0].Rows[i]["Id"].ToString());
Console.WriteLine("Data 1 Not Same Expected:" + data.Rows[i]["Value"].ToString() + " but was:" + result[0].Rows[i]["Value"].ToString());
for (var i = 0; i < data2.Rows.Count; i++)
if (data2.Rows[i]["Id"].ToString()!= result[1].Rows[i]["Id"].ToString() ||
data2.Rows[i]["Description"].ToString()!= result[1].Rows[i]["Description"].ToString())
Console.WriteLine("Data 2 Not Same Expected:" + data2.Rows[i]["Id"] + " but was:" + result[1].Rows[i]["Id"]);
Console.WriteLine("Data 2 Not Same Expected:" + data2.Rows[i]["Description"] + " but was:" + result[1].Rows[i]["Description"]);
Console.WriteLine("Same");
Console.WriteLine("Not Same");
public static bool SaveToFile(DataTable[] NW, string path)
using (var stream = new System.IO.MemoryStream())
System.Runtime.Serialization.IFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
formatter.Serialize(stream, NW);
System.IO.File.WriteAllBytes(path, stream.ToArray());
public static DataTable[] LoadFromFile(string path)
byte[] buffer = System.IO.File.ReadAllBytes(path);
var stream = new System.IO.MemoryStream(buffer);
System.Runtime.Serialization.IFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
return (DataTable[])formatter.Deserialize(stream);