2012-05-30 3 views
0

Я хочу удалить DataRow в своей базе данных MySql, используя Linq для поиска строки и удаления строки из набора данных. Но это не сработает, чтобы удалить строку в моей базе данных. Мой код:Поиск DataRow с Linq и удаление из набора данных

var results = (from myRow in dataSet.Tables["Students_has_Courses"].AsEnumerable() 
       where myRow.Field<int>("Students_idStudents") == 1 && myRow.Field<int>("Courses_idCourses") == 1 
       select new { id = myRow }).ToList(); 
foreach (var x in results) 
{ 
     dataSet.Tables["Students_has_Courses"].Rows.Remove(x.id); 
     x.id.Delete(); 
} 

dataAdapter.Update(dataSet); 

Что я делаю неправильно?

+1

Вы пробовали '.... Rows.Remove (x);'? –

+0

Получите некоторые ошибки, когда я попробую: «Наилучшее перегруженное соответствие метода для« System.Data.DataRowCollection.Remove (System.Data.DataRow) »содержит некоторые недопустимые аргументы» && «Аргумент 1: невозможно преобразовать из« Анонимного типа 1 », to 'System.Data.DataRow' " – francisMi

ответ

3

Removing строки из DataTable означают, что они не будут удалены из базы данных позже.

Если вы хотите, чтобы их удаляли с помощью DataAdapter/TableAdapter, вам необходимо позвонить Delete в DataRow. Затем они будут отмечены DataRowState.Deleted.

var results = from myRow in dataSet.Tables["Students_has_Courses"].AsEnumerable() 
       where myRow.Field<int>("Students_idStudents") == 1 
       && myRow.Field<int>("Courses_idCourses") == 1 
       select myRow; 
foreach (DataRow row in results) 
    row.Delete(); 
dataAdapter.Update(dataSet); 
Смежные вопросы