从数据表 C# 中删除特定行
Removing certain row from datatable C#
我正在尝试从数据表中删除某个单元格为空的行。我试过使用 for 循环但无济于事。
for (int i = dtbl.Rows.Count - 1; i >= 0; i--)
{
DataRow dr = dtbl.Rows[i];
if (dr["id"] == null)
dtbl.Rows.Remove(dr);
}
如果 ID 列的单元格为空,则应删除该行。
任何帮助表示赞赏。提前致谢。
您可以使用 linq 来 select 那些不为空的
dtbl = dtbl.AsEnumerable()
.Where(r => r.Field<string>("id") != null)
.CopyToDataTable();
可能需要类型,指定要比较的可空类型 row.Field<int?>("id").HasValue
将你的测试改为这个。
for (int i = dtbl.Rows.Count - 1; i >= 0; i--)
{
DataRow dr = dtbl.Rows[i];
if (dr.IsNull("id"))
dtbl.Rows.Remove(dr);
}
查看文档:DataRow.IsNull
或者您可以对特殊字段进行检查 DbValue.Null
if (dr["id"] == DbNull.Value)
另一种方法是这个
for (int i = dtbl.Rows.Count - 1; i >= 0; i--)
{
DataRow dr = dtbl.Rows[i];
if (dr.IsNull("id"))
dr.Delete();
}
dtbl.AcceptChanges();
最后一个仅标记要删除的行,但该行仍保留在 table 中,直到您调用 AcceptChanges。 (所以这个方法是 suitable for a foreach loop)
如果您计划稍后更新真实数据库 table,则调用 DataRow.Delete 是首选工作方式(例如,当您希望您的用户从绑定网格中删除许多行,然后进行一次更新以仅当用户单击“保存”按钮时才打开数据库)。
我正在尝试从数据表中删除某个单元格为空的行。我试过使用 for 循环但无济于事。
for (int i = dtbl.Rows.Count - 1; i >= 0; i--)
{
DataRow dr = dtbl.Rows[i];
if (dr["id"] == null)
dtbl.Rows.Remove(dr);
}
如果 ID 列的单元格为空,则应删除该行。 任何帮助表示赞赏。提前致谢。
您可以使用 linq 来 select 那些不为空的
dtbl = dtbl.AsEnumerable()
.Where(r => r.Field<string>("id") != null)
.CopyToDataTable();
可能需要类型,指定要比较的可空类型 row.Field<int?>("id").HasValue
将你的测试改为这个。
for (int i = dtbl.Rows.Count - 1; i >= 0; i--)
{
DataRow dr = dtbl.Rows[i];
if (dr.IsNull("id"))
dtbl.Rows.Remove(dr);
}
查看文档:DataRow.IsNull
或者您可以对特殊字段进行检查 DbValue.Null
if (dr["id"] == DbNull.Value)
另一种方法是这个
for (int i = dtbl.Rows.Count - 1; i >= 0; i--)
{
DataRow dr = dtbl.Rows[i];
if (dr.IsNull("id"))
dr.Delete();
}
dtbl.AcceptChanges();
最后一个仅标记要删除的行,但该行仍保留在 table 中,直到您调用 AcceptChanges。 (所以这个方法是 suitable for a foreach loop)
如果您计划稍后更新真实数据库 table,则调用 DataRow.Delete 是首选工作方式(例如,当您希望您的用户从绑定网格中删除许多行,然后进行一次更新以仅当用户单击“保存”按钮时才打开数据库)。