C# 合并数据集后获取更改

C# 合并数据集后获取更改,c#,.net,dataset,C#,.net,Dataset,您好,我有两个具有相同模式的数据集,我需要在两个数据集之间进行更改 可以使用以下代码创建数据集: DataSet First = new DataSet("DSStore"); DataTable Footer = new DataTable("Footer"); DataColumn Column = new DataColumn("Value", Type.GetType("System.Int32"), ""); DataColumn[] PK = new DataColumn[1]; P

您好,我有两个具有相同模式的数据集,我需要在两个数据集之间进行更改

可以使用以下代码创建数据集:

DataSet First = new DataSet("DSStore");
DataTable Footer = new DataTable("Footer");
DataColumn Column = new DataColumn("Value", Type.GetType("System.Int32"), "");
DataColumn[] PK = new DataColumn[1];
PK[0] = Column;
DataSet changes;
First.Tables.Add(Footer);
Footer.Columns.Add(Column);
Footer.PrimaryKey = PK;
//Clone to create second one
changes = First.Clone();
现在,只需用数据填充两个:

for (int i = 0; i < 10; i++)
{
     var row2 = changes.Tables["Footer"].NewRow();
     row2["Value"] = i;
     changes.Tables["Footer"].Rows.Add(row2);
}
var firstRow = First.Tables["Footer"].NewRow();
firstRow["Value"] = 8;
First.Tables["Footer"].Rows.Add(firstRow);
First.AcceptChanges();
changes.AcceptChanges();
但不幸的是,merge不会更改行状态,所以在接受行之后,hasChanges返回false,getchanges为null

我试过另一种方法:

IEnumerable<DataRow> added = changes.Tables["Footer"].AsEnumerable().Except(First.Tables["Footer"].AsEnumerable(),DataRowComparer.Default);
Console.WriteLine("Added:");
foreach (var row in added)
{
    Console.WriteLine(row["Value"]);
}

但是在尝试添加行之后,我收到了
ArgumentException

我需要更改一行:

foreach(var row in added)
{
     changes2.Tables["Footer"].Rows.Add(row.ItemArray);
}
现在没事了。添加行会创建更改

foreach(var row in added)
{
   changes2.Tables["Footer"].Rows.Add(row);
}
if (changes2.HasChanges())
   Console.WriteLine("has changes");
else
   Console.WriteLine("Doesnt");
foreach(var row in added)
{
     changes2.Tables["Footer"].Rows.Add(row.ItemArray);
}