This method also called Union two dataset meaning that if both dataset contains same data, the combined dataset will not included.
Method Union Dataset :
/// <summary>
/// Creates the union of two Datasets, the values are compared for uniqueness by the given ID column name.
/// </summary>
/// <param name="ds1">First DataSet</param>
/// <param name="ds2">Second DataSet</param>
/// <param name="idColumn">ID column name</param>
public static DataSet Union(DataSet ds1, DataSet ds2, string idColumn)
{
if (ds1 == null)
{
return ds2;
}
if (ds2 == null)
{
return ds1;
}
ArrayList addTables = new ArrayList();
// Add the new rows
foreach (DataTable dt in ds2.Tables)
{
DataTable destTable = ds1.Tables[dt.TableName];
if (destTable != null)
{
// Create list of existing IDs
ArrayList existingIDs = new ArrayList();
foreach (DataRow dr in destTable.Rows)
{
int id = GetInteger(dr[idColumn], 0);
if ((id > 0) && !existingIDs.Contains(id))
{
existingIDs.Add(id);
}
}
// Add new rows
foreach (DataRow dr in dt.Rows)
{
int id = GetInteger(dr[idColumn], 0);
if ((id > 0) && !existingIDs.Contains(id))
{
// Add new row
destTable.Rows.Add(dr.ItemArray);
existingIDs.Add(id);
}
}
}
else
{
// Add full table
addTables.Add(dt);
}
}
// Add full tables
foreach (DataTable dt in addTables)
{
ds2.Tables.Remove(dt);
ds1.Tables.Add(dt);
}
return ds1;
}
/// <summary>
/// Returns the integer representation of an object or default value if not.
/// </summary>
/// <param name="value">Value to convert</param>
/// <param name="defaultValue">Default value</param>
/// <param name="culture">Culture used for conversion</param>
public static int GetInteger(object value, int defaultValue, CultureInfo culture = null)
{
if (value is int)
{
return (int)value;
}
int v;
if (Int32.TryParse(Convert.ToString(value), out v))
{
return v;
}
return defaultValue;
}
NOTE : – If You have Found this post Helpful, I will appreciate if you can Share it on Facebook, Twitter and Other Social Media Sites. Thanks =)
0 comments:
Post a Comment