【问题标题】:Search DataRow with Linq and delete from Dataset使用 Linq 搜索 DataRow 并从数据集中删除
【发布时间】:2012-06-04 18:33:15
【问题描述】:

我想在 MySql 数据库中删除一个 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);

我做错了什么?

【问题讨论】:

  • 你试过....Rows.Remove(x);吗?
  • 当我尝试这样做时出现一些错误:“'System.Data.DataRowCollection.Remove(System.Data.DataRow)' 的最佳重载方法匹配有一些无效参数”&&“参数 1:不能从 'AnonymousType#1' 转换为 'System.Data.DataRow'"

标签: c# linq ado.net dataset datarow


【解决方案1】:

Removing DataTable 中的行并不意味着它们稍后会从数据库中删除。

如果您希望使用 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 2016-07-07
    相关资源
    最近更新 更多