C# 如果ID满足DataSet.DataTable值,则从临时DataTable中删除

C# 如果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.

我正在研究一种算法来循环遍历现有的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.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();

基本上,它提供了第一个表中不在第二个表中的所有内容。如果 DATAOWFrimeReal.Eudio与你想要的不匹配,那么你需要定义和相等比较器并将其传递给它,除非(例如,你可以做一个只比较1个列值的地方,我认为DeFualt会比较每行中的所有值)。
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();