繁体   English   中英

从数据表中删除特定的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中的行,实际上如何从数据集/数据表中删除这些行? 也许是一种更好的方法。

要从数据表中删除行,您需要执行一些操作。

首先找到符合条件的所有行

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

请注意,上一步仅将行标记为已删除,这些行仍在数据表中,但无法再访问(并且尝试使用其RowState == DataRowState.Deleted的行会导致异常)

现在您可以从DataTable调用中删除这些行

dataSet.Tables[0].AcceptChanges();

还要注意,此代码不会更改数据库表上的任何内容,而只会更改内存中的 DataTable。 如果要从数据库表中删除行,则需要特定于数据库的特定ADO.NET代码-例如,在Sql Server中,您需要调用SqlDataAdapter.Update方法以进行批处理删除或单个SqlCommand序列与对于要删除的每一行都使用适当的DELETE语句。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM