C# 如果ID满足DataSet.DataTable值,则从临时DataTable中删除
我正在研究一种算法来循环遍历现有的DataSet.DataTable和Temporary-DataTableC# 如果ID满足DataSet.DataTable值,则从临时DataTable中删除,c#,for-loop,datatable,C#,For Loop,Datatable,我正在研究一种算法来循环遍历现有的DataSet.DataTable和Temporary-DataTable int res_index = 0; foreach (DataRow r in myDataSet.tbl_reservation) { //MessageBox.Show("r" + myDataSet.tbl_reservation.Rows[res_index]["tableID"].ToString()); int rID = (int)myDataSet.
int res_index = 0;
foreach (DataRow r in myDataSet.tbl_reservation)
{
//MessageBox.Show("r" + myDataSet.tbl_reservation.Rows[res_index]["tableID"].ToString());
int rID = (int)myDataSet.tbl_reservation.Rows[res_index]["tableID"];
int tmp_index = 0;
foreach (DataRow t in tmp_table.Rows)
{
//MessageBox.Show("t" + tmp_table.Rows[tmp_index]["tableID"].ToString());
int tID = (int)tmp_table.Rows[tmp_index]["tableID"];
if (rID == tID)
{
tmp_table.Rows.RemoveAt(tmp_index);
}
tmp_index++;
}
res_index++;
}
我在循环中放置了一个循环,以查找每行中ID的值。我希望在临时数据表中删除匹配的行。(稍后放入数据网格)
int res_index = 0;
foreach (DataRow r in myDataSet.tbl_reservation)
{
//MessageBox.Show("r" + myDataSet.tbl_reservation.Rows[res_index]["tableID"].ToString());
int rID = (int)myDataSet.tbl_reservation.Rows[res_index]["tableID"];
int tmp_index = 0;
foreach (DataRow t in tmp_table.Rows)
{
//MessageBox.Show("t" + tmp_table.Rows[tmp_index]["tableID"].ToString());
int tID = (int)tmp_table.Rows[tmp_index]["tableID"];
if (rID == tID)
{
tmp_table.Rows.RemoveAt(tmp_index);
}
tmp_index++;
}
res_index++;
}
当它找到匹配项并试图删除它时,我得到一个错误
int res_index = 0;
foreach (DataRow r in myDataSet.tbl_reservation)
{
//MessageBox.Show("r" + myDataSet.tbl_reservation.Rows[res_index]["tableID"].ToString());
int rID = (int)myDataSet.tbl_reservation.Rows[res_index]["tableID"];
int tmp_index = 0;
foreach (DataRow t in tmp_table.Rows)
{
//MessageBox.Show("t" + tmp_table.Rows[tmp_index]["tableID"].ToString());
int tID = (int)tmp_table.Rows[tmp_index]["tableID"];
if (rID == tID)
{
tmp_table.Rows.RemoveAt(tmp_index);
}
tmp_index++;
}
res_index++;
}
“集合已修改;枚举操作可能无法执行。”
int res_index = 0;
foreach (DataRow r in myDataSet.tbl_reservation)
{
//MessageBox.Show("r" + myDataSet.tbl_reservation.Rows[res_index]["tableID"].ToString());
int rID = (int)myDataSet.tbl_reservation.Rows[res_index]["tableID"];
int tmp_index = 0;
foreach (DataRow t in tmp_table.Rows)
{
//MessageBox.Show("t" + tmp_table.Rows[tmp_index]["tableID"].ToString());
int tID = (int)tmp_table.Rows[tmp_index]["tableID"];
if (rID == tID)
{
tmp_table.Rows.RemoveAt(tmp_index);
}
tmp_index++;
}
res_index++;
}
我认为这是一个不稳定的问题,因为我正试图从当前正在使用的数据表中删除,但我想不出一个解决方案来修复我的问题
int res_index = 0;
foreach (DataRow r in myDataSet.tbl_reservation)
{
//MessageBox.Show("r" + myDataSet.tbl_reservation.Rows[res_index]["tableID"].ToString());
int rID = (int)myDataSet.tbl_reservation.Rows[res_index]["tableID"];
int tmp_index = 0;
foreach (DataRow t in tmp_table.Rows)
{
//MessageBox.Show("t" + tmp_table.Rows[tmp_index]["tableID"].ToString());
int tID = (int)tmp_table.Rows[tmp_index]["tableID"];
if (rID == tID)
{
tmp_table.Rows.RemoveAt(tmp_index);
}
tmp_index++;
}
res_index++;
}
有经验的人能帮忙吗
int res_index = 0;
foreach (DataRow r in myDataSet.tbl_reservation)
{
//MessageBox.Show("r" + myDataSet.tbl_reservation.Rows[res_index]["tableID"].ToString());
int rID = (int)myDataSet.tbl_reservation.Rows[res_index]["tableID"];
int tmp_index = 0;
foreach (DataRow t in tmp_table.Rows)
{
//MessageBox.Show("t" + tmp_table.Rows[tmp_index]["tableID"].ToString());
int tID = (int)tmp_table.Rows[tmp_index]["tableID"];
if (rID == tID)
{
tmp_table.Rows.RemoveAt(tmp_index);
}
tmp_index++;
}
res_index++;
}
我相信你在寻找这样的东西
int res_index = 0;
foreach (DataRow r in myDataSet.tbl_reservation)
{
//MessageBox.Show("r" + myDataSet.tbl_reservation.Rows[res_index]["tableID"].ToString());
int rID = (int)myDataSet.tbl_reservation.Rows[res_index]["tableID"];
int tmp_index = 0;
foreach (DataRow t in tmp_table.Rows)
{
//MessageBox.Show("t" + tmp_table.Rows[tmp_index]["tableID"].ToString());
int tID = (int)tmp_table.Rows[tmp_index]["tableID"];
if (rID == tID)
{
tmp_table.Rows.RemoveAt(tmp_index);
}
tmp_index++;
}
res_index++;
}
var diff= table1.AsEnumerable().Except(table2.AsEnumerable(),
DataRowComparer.Default).ToDateTable();
基本上,它提供了第一个表中不在第二个表中的所有内容。如果
int res_index = 0;
foreach (DataRow r in myDataSet.tbl_reservation)
{
//MessageBox.Show("r" + myDataSet.tbl_reservation.Rows[res_index]["tableID"].ToString());
int rID = (int)myDataSet.tbl_reservation.Rows[res_index]["tableID"];
int tmp_index = 0;
foreach (DataRow t in tmp_table.Rows)
{
//MessageBox.Show("t" + tmp_table.Rows[tmp_index]["tableID"].ToString());
int tID = (int)tmp_table.Rows[tmp_index]["tableID"];
if (rID == tID)
{
tmp_table.Rows.RemoveAt(tmp_index);
}
tmp_index++;
}
res_index++;
}
您必须使用for循环或将索引存储到临时存储中,然后再删除
int res_index = 0;
foreach (DataRow r in myDataSet.tbl_reservation)
{
//MessageBox.Show("r" + myDataSet.tbl_reservation.Rows[res_index]["tableID"].ToString());
int rID = (int)myDataSet.tbl_reservation.Rows[res_index]["tableID"];
int tmp_index = 0;
foreach (DataRow t in tmp_table.Rows)
{
//MessageBox.Show("t" + tmp_table.Rows[tmp_index]["tableID"].ToString());
int tID = (int)tmp_table.Rows[tmp_index]["tableID"];
if (rID == tID)
{
tmp_table.Rows.RemoveAt(tmp_index);
}
tmp_index++;
}
res_index++;
}
foreach (DataRow r in myDataSet.tbl_reservation)
{
//MessageBox.Show("r" + myDataSet.tbl_reservation.Rows[res_index["tableID"].ToString());
int rID = (int)myDataSet.tbl_reservation.Rows[res_index]["tableID"];
int tmp_index = 0;
for(int tmp_index = 0;tmp_index<tmp_table.Rows.Count;tmp_index++)
{
//MessageBox.Show("t" + tmp_table.Rows[tmp_index]["tableID"].ToString());
int tID = (int)tmp_table.Rows[tmp_index]["tableID"];
if (rID == tID)
{
tmp_table.Rows.RemoveAt(tmp_index);
tmp_index--;
}
}
foreach(myDataSet.tbl_中的数据行r)
{
//Show(“r”+myDataSet.tbl_reservation.Rows[res_index[“tableID”].ToString());
int rID=(int)myDataSet.tbl_reservation.Rows[res_index][“tableID”];
int tmp_指数=0;
对于(int tmp_index=0;tmp_index我不确定我是否理解正确,但要从临时表中删除元素,可以应用选择
方法,然后对找到的行调用删除
,最后调用接受更改
,以有效地删除行
int res_index = 0;
foreach (DataRow r in myDataSet.tbl_reservation)
{
//MessageBox.Show("r" + myDataSet.tbl_reservation.Rows[res_index]["tableID"].ToString());
int rID = (int)myDataSet.tbl_reservation.Rows[res_index]["tableID"];
int tmp_index = 0;
foreach (DataRow t in tmp_table.Rows)
{
//MessageBox.Show("t" + tmp_table.Rows[tmp_index]["tableID"].ToString());
int tID = (int)tmp_table.Rows[tmp_index]["tableID"];
if (rID == tID)
{
tmp_table.Rows.RemoveAt(tmp_index);
}
tmp_index++;
}
res_index++;
}
foreach (DataRow r in myDataSet.tbl_reservation.Rows)
{
int rID = (int)r["tableID"];
// Find all the rows with the desidered tableID in temp_table
DataRow[] toRemove = tmp_table.Select("tableID=" + rID.ToString());
foreach(DataRow r in toRemove)
r.Delete(); // Delete doesn't try to remove the row, just marks it as deleted
}
// All the rows marked as deleted are effectively removed from the table rows collection
tmp_table.AcceptChanges();