从 DataTable 中删除特定的 DateTime 列行
Deleting specific DateTime column rows from a DataTable
我目前正在从包含 DateTime 列的数据表中选择一些特定的行。想法是在收集这些特定行后将其删除。
EnumerableRowCollection<DateTime?> dates =
dataSet.Tables[0].AsEnumerable()
.Select(r => r.Field<DateTime?>(dateColumn))
.Where((r => r < minDate || r > maxDate));
我正在获取 RowCollection 中的行,如何从 Dataset/DataTable 中实际删除这些行?或者也许是更好的方法。
要从数据中删除一行table,您需要执行一些操作。
首先找到符合您条件的所有行
var rowsToDelete = dataSet.Tables[0].AsEnumerable()
.Where(r => r.Field<DateTime?>(dateColumn) < minDate ||
r.Field<DateTime?>(dateColumn) > maxDate));
现在开始将每一行标记为已删除。
foreach(DataRow row in rowsToDelete)
row.Delete();
请注意,上一步仅将行标记为已删除,这些行仍在数据中table但它们无法再访问(并尝试使用其 RowState == DataRowState.Deleted 导致异常)
现在您可以从 DataTable 调用中删除这些行
dataSet.Tables[0].AcceptChanges();
另请注意,此代码不会更改数据库 table 上的任何内容,只会更改 内存中的 数据表。如果你想从数据库中删除行 table 那么你需要特定的 ADO.NET 特定于你的数据库的代码 - 例如在 Sql 服务器中你需要调用 SqlDataAdapter.Update 方法对于批量删除或一系列单个 Sql命令,每个要删除的行都有适当的 DELETE 语句。
我目前正在从包含 DateTime 列的数据表中选择一些特定的行。想法是在收集这些特定行后将其删除。
EnumerableRowCollection<DateTime?> dates =
dataSet.Tables[0].AsEnumerable()
.Select(r => r.Field<DateTime?>(dateColumn))
.Where((r => r < minDate || r > maxDate));
我正在获取 RowCollection 中的行,如何从 Dataset/DataTable 中实际删除这些行?或者也许是更好的方法。
要从数据中删除一行table,您需要执行一些操作。
首先找到符合您条件的所有行
var rowsToDelete = dataSet.Tables[0].AsEnumerable()
.Where(r => r.Field<DateTime?>(dateColumn) < minDate ||
r.Field<DateTime?>(dateColumn) > maxDate));
现在开始将每一行标记为已删除。
foreach(DataRow row in rowsToDelete)
row.Delete();
请注意,上一步仅将行标记为已删除,这些行仍在数据中table但它们无法再访问(并尝试使用其 RowState == DataRowState.Deleted 导致异常)
现在您可以从 DataTable 调用中删除这些行
dataSet.Tables[0].AcceptChanges();
另请注意,此代码不会更改数据库 table 上的任何内容,只会更改 内存中的 数据表。如果你想从数据库中删除行 table 那么你需要特定的 ADO.NET 特定于你的数据库的代码 - 例如在 Sql 服务器中你需要调用 SqlDataAdapter.Update 方法对于批量删除或一系列单个 Sql命令,每个要删除的行都有适当的 DELETE 语句。