我有一个带有数据行的table1,我想从table2中删除它。我试图循环数据并相应删除...
while (myDataReader.Read())
{
DataTable.Rows.Remove(DataRow);
}
没有运气,我也试图在两个表填充后删除
var correctDataTable = from p in DataTable
where (!tempDataTable.Rows.Contains(p))
select new { p };
有什么想法吗?
答案 0 :(得分:2)
我会写一个查询来在一个语句中完成所有操作
delete from TableA
where ColID in (select colid from tableB)
答案 1 :(得分:0)
坚持
DataTable.Rows.Remove(DataRow);
实际上不会删除数据库中的数据,假设这是您想要的。 这样,您只能从数据表对象中的行集合中删除行。
下一步是将更改实际提交到数据库。再次,假设这是你正在寻找的。 p>
答案 2 :(得分:0)
你想删除什么意思?你能指点一下你想要的更好吗? 要从表中删除整行,还是只删除一个单元格? - 基于什么? 你的第一篇文章非常不清楚。
所以你有两张桌子。第一个有所有数据,第二个有一些。如果table1中存在table2中的任何数据,那么必须删除表1中的这些数据?我是对的吗?
你可以循环遍历两个表的行(所以双循环):
foreach (DataRow dr1 in table1.Rows)
{
foreach (DataRow dr2 in table2.Rows)
{
if (dr1[0].ToString() == dr2[0].ToString())
{
table1.Rows.Remove(dr1);
break;
}
}
}
答案 3 :(得分:0)
我明白了。我将以下内容添加到table2的while循环中(包含要删除的行的表)。
while (myDataReader.Read())
{
DataRow drNew = DataTable.NewRow();
drNew["ID"] = myDataReader["ID#"].ToString().Trim();
drNew["Name"] = myDataReader["NAME"].ToString().Trim());
...
DataRow[] badRow = DataTable.Select(
"ID='" + drNew["ID"] + "' and Name='" + drNew["Name"] + "'");
if(badRow.Length >0)
DataTable.Rows.Remove(badRow[0]);
}
答案 4 :(得分:0)
如果您想要使用存储在另一个dataTable中的密钥从dataTable中删除某些行,您可以使用密钥对表进行迭代,找到要删除的表中的密钥并完成...
示例:强>
将TABLE2与(table1ID,col2,col3,col4)列和TABLE1与(id,col2,col3)列一起考虑。 你可以这样做:
foreach (TABLE2row t2r in TABLE2)
{
t1r=TABLE1.FindByID(t2r.Table1ID);
if (t1r!=null)
{
t1r.delete();
}
}
这是考虑您使用带主键的Typed数据集。
答案 5 :(得分:0)
删除dtCMATM表中不在dtAllowedList表中的所有记录。
private void GetProperData()
{
DataTable dtAllowedList = someclass.somefunctiontogetdata(....);
DataTable dtCMATM = someclass.somefunctiontogetdataTobeRemovedLaterOn(.........);
DataTable tblCloned = new DataTable();
tblCloned = dtCMATM.Clone();
foreach (DataRow dr2 in dtAllowedList.Rows)
{
DeleteRowsFromDataTable(ref tblCloned, dtCMATM, "AssignTo", dr2[0].ToString());
}
tblCloned.AcceptChanges();
dtCMATM = tblCloned;
dtCMATM.AcceptChanges();
}
private static void DeleteRowsFromDataTable(ref DataTable tblCloned, DataTable dtCMATM, string ColumnName, string columnValue)
{
string strExpression = "AssignTo = '" + columnValue + "' ";
dtCMATM.DefaultView.RowFilter = strExpression;
dtCMATM = dtCMATM.DefaultView.ToTable();
if (dtCMATM.Rows.Count > 0)
{
tblCloned.ImportRow(dtCMATM.Rows[0]);
}
}