在 C# 中比较两个数据集
我有两个数据集,我需要比较这两个数据集,这样如果一个表中不存在 ID,那么我需要编写插入查询,否则更新查询。
例如:
Id in One dataset ID in second Dataset
1 1
2 2
3 4
我需要将 ID 3 插入到第二个数据集。
这是我的代码供您参考:
if (ds.Tables[0].Rows.Count > 0 || clientDS.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
for (int j = 0; j < clientDS.Tables[0].Rows.Count; j++)
{
if (ds.Tables[0].Rows[i]["Id"].ToString() == clientDS.Tables[0].Rows[j]["Id"].ToString())
{
client.GetSingleValue("update customers set Name='" + ds.Tables[0].Rows[i]["Name"].ToString() + "',ContactPerson= '" + ds.Tables[0].Rows[i]["ContactPerson"].ToString() + "',Address='" + ds.Tables[0].Rows[i]["Address"].ToString() + "',TinNo='" + ds.Tables[0].Rows[i]["TinNo"].ToString() + "',ContactNo='" + ds.Tables[0].Rows[i]["Contactno"].ToString() + "',Report= '" + ds.Tables[0].Rows[i]["Report"].ToString() + "',Sync=0,Ids='" + ds.Tables[0].Rows[i]["Id"].ToString() + "' where id='" + ds.Tables[0].Rows[i]["Id"].ToString() + "' ");
}
else
{
client.GetSingleValue("insert into customers(id,Name,ContactPerson,Address,TinNo,ContactNo,Report,Sync,Ids) values('" + ds.Tables[0].Rows[i]["Id"].ToString() + "', '" + ds.Tables[0].Rows[i]["Name"].ToString() + "','" + ds.Tables[0].Rows[i]["ContactPerson"].ToString() + "', '" + ds.Tables[0].Rows[i]["Address"].ToString() + "', '" + ds.Tables[0].Rows[i]["TinNo"].ToString() + "', '" + ds.Tables[0].Rows[i]["Contactno"].ToString() + "', '" + ds.Tables[0].Rows[i]["Report"].ToString() + "',0,'" + ds.Tables[0].Rows[i]["Id"].ToString() + "')");
}
}
}
}
上面的代码不起作用。 请纠正我的问题。
谢谢
i have two datasets and i need to compare these two datasets such that if ID does not exist in one table then i need to write insert Query else update query.
For Ex:
Id in One dataset ID in second Dataset
1 1
2 2
3 4
I need to insert ID 3 to second dataset.
Here is my code for your reference:
if (ds.Tables[0].Rows.Count > 0 || clientDS.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
for (int j = 0; j < clientDS.Tables[0].Rows.Count; j++)
{
if (ds.Tables[0].Rows[i]["Id"].ToString() == clientDS.Tables[0].Rows[j]["Id"].ToString())
{
client.GetSingleValue("update customers set Name='" + ds.Tables[0].Rows[i]["Name"].ToString() + "',ContactPerson= '" + ds.Tables[0].Rows[i]["ContactPerson"].ToString() + "',Address='" + ds.Tables[0].Rows[i]["Address"].ToString() + "',TinNo='" + ds.Tables[0].Rows[i]["TinNo"].ToString() + "',ContactNo='" + ds.Tables[0].Rows[i]["Contactno"].ToString() + "',Report= '" + ds.Tables[0].Rows[i]["Report"].ToString() + "',Sync=0,Ids='" + ds.Tables[0].Rows[i]["Id"].ToString() + "' where id='" + ds.Tables[0].Rows[i]["Id"].ToString() + "' ");
}
else
{
client.GetSingleValue("insert into customers(id,Name,ContactPerson,Address,TinNo,ContactNo,Report,Sync,Ids) values('" + ds.Tables[0].Rows[i]["Id"].ToString() + "', '" + ds.Tables[0].Rows[i]["Name"].ToString() + "','" + ds.Tables[0].Rows[i]["ContactPerson"].ToString() + "', '" + ds.Tables[0].Rows[i]["Address"].ToString() + "', '" + ds.Tables[0].Rows[i]["TinNo"].ToString() + "', '" + ds.Tables[0].Rows[i]["Contactno"].ToString() + "', '" + ds.Tables[0].Rows[i]["Report"].ToString() + "',0,'" + ds.Tables[0].Rows[i]["Id"].ToString() + "')");
}
}
}
}
Above code does not work. Pls rectify my issue.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
使用 Merge 方法:
这会将 Dataset1 中但尚未存在于 Dataset2 中的任何记录插入到 Dataset2 中。 注意:您最初的问题表明您需要插入记录或更新 Dataset1 中的匹配记录,但您的评论似乎表明您实际上不需要进行更新。 Merge 方法只会从 Dataset1 插入新记录。
Use the Merge method:
This will insert into Dataset2 any records that are in Dataset1 but not already in Dataset2. Note: your original question suggests that you need to insert records or update matching records from Dataset1, but your comments appear to suggest that you don't actually need to do an update. The Merge method will only insert new records from Dataset1.
会将
data2
合并到data1
中,不会覆盖具有相同主键的行,并添加data1
中不存在主键的行。将合并
data2
到data1
覆盖所有行并添加新行will merge
data2
intodata1
not overwrite rows with same primary key and add rows with non existing primary key indata1
.will merge
data2
intodata1
overwriting all rows and add new rows我认为您的错误是使用
==
比较 Id 字符串。 尝试使用等于
。我只是使用 foreach 并选择:
I think your error is compaing the Id string using
==
. Try usingEquals
.I'd just use a foreach and select instead:
将这两个表(DataTable 实例)添加到 DataSet 中并添加关系。
数据集 ds = new 数据集();
ds.EnforceConstraints = false;
Add both these tables (DataTable instances) into a DataSet and add relation.
DataSet ds = new DataSet();
ds.EnforceConstraints = false;