namespace MergePractice
{
internal class Program
{
static void Main(string[] args)
{
DataTable originPK = GetDataTable(true);
DataTable modifiedPK = GetDataTable(true);
modifiedPK.Rows[0]["item"] = "更新資料";
DataRow row = modifiedPK.NewRow();
row["id"] = 14;
row["item"] = "新增欄位";
modifiedPK.Rows.Add(row);
originPK.Merge(modifiedPK);
PrintValues(originPK, "有 PK 狀態");
DataTable origin = GetDataTable(false);
DataTable modified = GetDataTable(false);
origin.Merge(modified);
PrintValues(origin, "無 PK 狀態");
}
private static DataTable GetDataTable(bool includePrimaryKey)
{
DataTable dt = new DataTable("Items");
DataColumn idColumn = new DataColumn("id", typeof(int));
DataColumn itemColumn = new DataColumn("item", typeof(string));
dt.Columns.Add(idColumn);
dt.Columns.Add(itemColumn);
if (includePrimaryKey)
dt.PrimaryKey = new DataColumn[] { idColumn };
DataRow row;
for (int i = 0; i <= 5; i++)
{
row = dt.NewRow();
row["id"] = i;
row["item"] = i.ToString();
dt.Rows.Add(row);
}
dt.AcceptChanges();
return dt;
}
private static void PrintValues(DataTable table, string label)
{
Console.WriteLine(label);
foreach (DataRow row in table.Rows)
{
string rowMessage = row.RowState.ToString().PadLeft(10, ' ');
foreach (DataColumn col in table.Columns)
{
rowMessage += "\t " + row[col].ToString();
}
Console.WriteLine(rowMessage);
}
}
}
}沒有 PK 狀態就兩個 DataTable 合併在一起


沒有留言:
張貼留言