使用Linq搜索DataRow并从Dataset中删除

时间:2012-05-30 13:53:08

标签: c# linq ado.net dataset datarow

我想删除MySql数据库中的DataRow,使用Linq搜索该行,并从dataSet中删除该行。 但是删除数据库中的行是行不通的。 我的代码:

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 个答案:

答案 0 :(得分:3)

DataTable中的

Removing行意味着以后不会从数据库中删除它们。

如果您希望使用DataAdapter / TableAdapter删除它们,则需要在DataRow上调用Delete。然后他们将标有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);