C#中DataTable刪除多條數據


實際使用

//循環DataTable,刪除數據
for(int i = dtPreview.Rows.Count - 1; i >= 0; i--)
{
    if(listSelected.Contains(i))
    {
        dtPreview.Rows[i].Delete();
    }
}
dtPreview.AcceptChanges();
 

說明

即使使用的是Rows[i].Delete();方法,仍然有問題。
調試時發現執行玩Delete()方法,就會把DataTable中的數據刪除掉,導致dtPreview.Rows.Count的值一直在變化。
所以倒着循環,從最大的索引開始刪除,這樣刪除后,被刪除索引前面的索引不會發生變化。
 

網上百度的結果

//一般情況下我們會這么刪除
DataTable dt = new DataTable();
for(int i = 0; i < dt.Rows.Count; i++)
{
    if(99 % i == 0)
    {
        dt.Rows.RemoveAt(i);
    }
}
//但是這么刪除會出現意外情況
//當運行dt.Rows.RemoveAt(i)代碼后DataTable的index會發生改變
//且他的dt.Rows.Count也會改變
//正確做法一
for(int i = dt.Rows.Count - 1; i >= 0; i--)
{
    if(99 % i == 0)
    {
        dt.Rows.RemoveAt(i);
    }
}
//正確做法二
for(int i = 0; i < dt.Rows.Count; i++)
{
    if(99 % i == 0)
    {
        dt.Rows[i].Delete();
    }
}
dt.AcceptChanges(); //提交
//dt.RejectChanges();//回滾

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM