当前位置:  开发笔记 > 编程语言 > 正文

从datatable中删除datarow

如何解决《从datatable中删除datarow》经验,为你挑选了1个好方法。

假设我有一个数据表dt(它包含广告商),我想从dt中删除一行,其中advertiserID等于一个值,我该怎么做?

DataTable dt = new DataTable();
//populate the table
dt = DynamicCache.GetAdvertisers();

//I can select a datarow like this:
DataRow[] advRow = dt.Select("advertiserID = " + AdvID);

//how do you remove it, this get's me an error
dt.Rows.Remove(advRow)

那你怎么做得对呢?

谢谢.



1> Cos Callis..:

advRow是一个阵列.您必须确定要删除的数组中的哪一行.

dt.Rows.Remove(advRow[0]);

当然,这只会将其从数据表中删除,不一定是它背后的数据源(sql,xml,...).这将需要更多......

在选择后检查数组或迭代数组是个好主意...

var datatable = new DataTable();
            DataRow[] advRow = datatable.Select("id=1");
            datatable.Rows.Remove(advRow[0]);
            //of course if there is nothing in your array this will get you an error..

            foreach (DataRow dr in advRow)
            {
                // this is not a good way either, removing an
                //item while iterating through the collection 
                //can cause problems.
            }

            //the best way is:
            for (int i = advRow.Length - 1; i >= 0; i--)
            {
                datatable.Rows.Remove(advRow[i]);
            }
            //then with a dataset you need to accept changes
            //(depending on your update strategy..)
            datatable.AcceptChanges();


.AcceptChanges()仅适用于表中存在的行!在.Delete()之后,该行仍然存在(作为DataRowState.Deleted)但不在.Remove()之后!所以.AcceptChanges()在这个座位中没有必要.
推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有