如何通过比较两个datatable的值而删掉其中一个datatable的行?

hyfu111 2004-05-10 05:30:38
有两个datatable:Table1,Table2,其中含有相同的行,我写了段程序想删除Table2中与Table1相同的行,老是出错,不知为何,代码如下,哪位高人给指点一下

foreach(DataRow myRow in Table1.Rows )
{
string enFieldName=myRow[1].ToString();
foreach(DataRow myRow2 in Table2.Rows )
{
if(enFieldName==myRow2[1].ToString())
{

Table2.Rows.Remove(myRow2);
Table2.AcceptChanges();
}
}
}
...全文
325 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyfu111 2004-05-11
  • 打赏
  • 举报
回复
解决了谢谢大家
yellowhwb 2004-05-10
  • 打赏
  • 举报
回复
如果你在填充DataTable时没排序,那就:
int RowNum1=Table1.Rows.Count;
for(int i=0;i<RowNum1;i++)
{
int RowNum2=Table2.Rows.Count;
for(int j=RowNum2-1;j<=0;j--)
{
if(Table1.Rows[i][0].ToString()=Table2.Rows[j][0].ToString() && Table1.Rows[i][1].ToString()=Table2.Rows[j][1].ToString()&& ...)
{
Table2.Rows.Remove(Table2.Rows[j]);
}
}
}

wolftop 2004-05-10
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchTopQuestionsAboutASPNETDataGridServerControl.asp
SeamInAction 2004-05-10
  • 打赏
  • 举报
回复
你试试在SelectText语句中加一个distinct
select distinct * from tablename
就可以消除重复行啊
俞庆平 2004-05-10
  • 打赏
  • 举报
回复
你这种删除办法肯定是不行人。
因为myRow2[1]是一个集合,列的集合,所以得到不是你所描述行的内容。
应当选择关键字或者具有唯一性的列作为比较对象
如string enFieldValue = myRow[i][KeyWordField].ToString();
比较前后的列值,即可办到这一点。
我的代码就是这样实现的。
hyfu111 2004-05-10
  • 打赏
  • 举报
回复
补充一下,这两个表的结构相同
hyfu111 2004-05-10
  • 打赏
  • 举报
回复
补充一下,这两个表的结构是一样的

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧