快速从数据表中删除在其他数据表中找不到的行
本文关键字:数据表 找不到 其他 删除 | 更新日期: 2023-09-27 18:20:36
这里有两个数据表dtPartMaster([导出的零件号])和dtPartBackUp([零件号备份],[weight])现在我想删除dtPartBackUp中的行,而dtPartMaster([导出的零件号])中不存在[零件号备份]我的逻辑是这样的,但处理billon记录需要很长时间
button1_click()
{ int count = 0;
//line remove for clearity
foreach (DataRow dr in dtPartBackUp.Rows)
{
if (!CheckPartNumber(dr["Part Number Backup"].ToString(), dtPartMaster))
{
dtPartBackUp.Rows[count].Delete();
}
count++;
}
dtPartBackUp.AcceptChanges();// to accept changes
}
private bool CheckPartNumber(string PartNumber, DataTable dt)
{
bool flag = false;
DataRow dr = dt.Select("[Part Number Exported] Like '" + PartNumber + "'").FirstOrDefault();
if (dr != null)
flag = true;
dr = null;
return flag;
}
提前感谢Amrit
试试这个(未测试),
这应该会根据id列返回dt1和dt2中的行列表(我认为您的id和id2列属于字符串类型)
var rows = (from r1 in dt1.AsEnumerable()
join r2 in dt2.AsEnumerable() on r1.Field<string>("id") equals r2.Field<string>("id2")
select r1).ToList();
for (i = 0;i< dtPartBackUp.Rows.count;i++)
{
if (!CheckPartNumber(dr["Part Number Backup"].ToString(), dtPartMaster))
{
dtPartBackUp.Rows.removeat(i);
i--;
}
}
dtPartBackUp.AcceptChanges();// to accept changes
}
private bool CheckPartNumber(string PartNumber, DataTable dt)
{
bool flag = false;
DataRow dr = dt.Select("[Part Number Exported] Like '" + PartNumber + "'").FirstOrDefault();
if (dr != null)
flag = true;
dr = null;
return flag;
}