Torna al Thread
//Create DataRelation
DataRelation r = new DataRelation(string.Empty,dataSet11.Table1.campo1Column,dataSet11.Table2.campo1Column,false);
dataSet11.Relations.Add(r);
//Create Columns for JOIN table
for(int i = 0; i < dataSet11.Table1.Columns.Count; i++)
{
table.Columns.Add(dataSet11.Table1.Columns[i].ColumnName, dataSet11.Table1.Columns[i].DataType);
}
for(int i = 0; i < dataSet11.Table2.Columns.Count; i++)
{
//Beware Duplicates
if(!table.Columns.Contains(dataSet11.Table2.Columns[i].ColumnName))
table.Columns.Add(dataSet11.Table2.Columns[i].ColumnName, dataSet11.Table2.Columns[i].DataType);
else
table.Columns.Add(dataSet11.Table2.Columns[i].ColumnName + "_Second", dataSet11.Table2.Columns[i].DataType);
}
//Loop through First table
table.BeginLoadData();
foreach(DataRow firstrow in dataSet11.Tables[0].Rows)
{
//Get "joined" rows
DataRow[] childrows = firstrow.GetChildRows(r);
if(childrows != null && childrows.Length > 0)
{
object[] parentarray = firstrow.ItemArray;
foreach(DataRow secondrow in childrows)
{
object[] secondarray = secondrow.ItemArray;
object[] joinarray = new object[parentarray.Length+secondarray.Length];
Array.Copy(parentarray,0,joinarray,0,parentarray.Length);
Array.Copy(secondarray,0,joinarray,parentarray.Length,secondarray.Length);
table.LoadDataRow(joinarray,true);
}
}
else
{
object[] parentarray = firstrow.ItemArray;
object[] joinarray = new object[parentarray.Length];
Array.Copy(parentarray,0,joinarray,0,parentarray.Length);
table.LoadDataRow(joinarray,true);
}
}
table.EndLoadData();
//Table pulito cleaned
DataTable dtclean = this.dataSet11.Table1.Clone();
DataRowCollection rowCollection = table.Rows;
for (int i = 0; i < table.Rows.Count;i++)
{
if(table.Rows[i]["campo1_Second"].ToString()!= "")
{
rowCollection.Remove(table.Rows[i]);
i--;
}
}