using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
CompareTables();
}
public static DataTable CompareTables()
{
DataTable first;
DataTable second;
first = new DataTable("[ProductionTool].[dbo].[Primary_Table]");
second = new DataTable("[ProductionTool].[dbo].[LOB_Master]");
DataTable table = new DataTable("Difference");
try
{
using (DataSet ds = new DataSet())
{
ds.Tables.AddRange(new DataTable[] { first.Copy(), second.Copy() });
DataColumn[] firstcolumns = new DataColumn[9];
firstcolumns[0] = ds.Tables[0].Columns.Add("LICENSTAGER");
firstcolumns[1] = ds.Tables[0].Columns.Add("EngineNo");
firstcolumns[2] = ds.Tables[0].Columns.Add("HullNo");
firstcolumns[3] = ds.Tables[0].Columns.Add("EngineType");
firstcolumns[4] = ds.Tables[0].Columns.Add("Owner");
firstcolumns[5] = ds.Tables[0].Columns.Add("Yard");
firstcolumns[6] = ds.Tables[0].Columns.Add("DesignSpec");
firstcolumns[7] = ds.Tables[0].Columns.Add("OrderDate");
firstcolumns[8] = ds.Tables[0].Columns.Add("DeliveryDate");
for (int i = 0; i < firstcolumns.Length; i++)
{
first.Columns.Add(firstcolumns[i].ToString());
}
DataColumn[] secondcolumns = new DataColumn[9];
secondcolumns[0] = ds.Tables[1].Columns.Add("Licensee");
secondcolumns[1] = ds.Tables[1].Columns.Add("ENGINENO");
secondcolumns[2] = ds.Tables[1].Columns.Add("HULLNO");
secondcolumns[3] = ds.Tables[1].Columns.Add("ENGINETYPE");
secondcolumns[4] = ds.Tables[1].Columns.Add("OWNER");
secondcolumns[5] = ds.Tables[1].Columns.Add("YARD");
secondcolumns[6] = ds.Tables[1].Columns.Add("Spec");
secondcolumns[7] = ds.Tables[1].Columns.Add("ORDATE");
secondcolumns[8] = ds.Tables[1].Columns.Add("DLDATE");
for (int i = 0; i < secondcolumns.Length; i++)
{
second.Columns.Add(secondcolumns[i].ToString());
}
DataRelation r = new DataRelation(string.Empty, firstcolumns, secondcolumns, false);
ds.Relations.Add(r);
for (int i = 0; i < first.Columns.Count; i++)
{
table.Columns.Add(first.Columns[i].ColumnName, first.Columns[i].DataType);
}
table.BeginLoadData();
foreach (DataRow parentrow in ds.Tables[0].Rows)
{
DataRow[] childrows = parentrow.GetChildRows(r);
if (childrows == null || childrows.Length == 0)
table.LoadDataRow(parentrow.ItemArray, true);
}
table.EndLoadData();
}
}
catch (Exception ex)
{
throw ex;
}
return table;
}
}
}