удалить данные из таблицы данных - PullRequest
6 голосов
/ 28 апреля 2011

Допустим, у меня есть dt с возможностью датирования (он содержит рекламодателей), и я хочу удалить строку из dt, где идентификатор рекламодателя равен значению. Как это сделать?

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 Ответ

10 голосов
/ 28 апреля 2011

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();
...