【问题标题】:Replace all null values in datacolum by 0 value用 0 值替换 datacolum 中的所有空值
【发布时间】:2013-11-21 10:08:59
【问题描述】:

在数据表中将所有 DBNull 值替换为 0 而不通过代码遍历所有行的最佳方法是什么。我正在使用 .NET 2.0 框架。

我试试这个:

 _data_table.Columns(DataColumName).Expression = String.Format("ISNULL({0},0)", DataColumName)

但由于表达式中的循环引用,我得到“ArgumentException”无法设置表达式属性。 我想避免创建一个临时重复的列;)

【问题讨论】:

    标签: .net datatable


    【解决方案1】:

    ...无需通过代码遍历所有行。

    只需逐行交谈;那是 3 行代码 tops:

    string DataColumnName = ...;
    DataColumn col = table.Columns[DataColumnName];
    foreach (DataRow row in table.Rows) if (row.IsNull(col)) row[col] = 0;
    

    如果你让它难以阅读,那就少一些。你目前正在尝试做的事情是行不通的。以后,您可以设置一个默认值。

    如果这实际上来自数据库,在单个基于集合的操作中在数据库中更新它

    update [table] set [column] = 0 where [column] is null
    

    【讨论】:

    • 或在查询中:SELECT COALESCE(column,0)AS column FROM table
    • 源数据表由外部函数提供,无法修改。如果获取后我设置了一个默认值,这只会在新添加的行中设置。
    • @arturn 是的,仅限新行;在那之前,只是循环
    • @MarcGravell:但它不需要更改数据源。你怎么知道 OP 有权更新或者表应该更新?如果他无论如何只是从中选择,这是获得他想要的东西的最便宜的方式。我假设他通过DataAdapter 填写了他的DataTable,因此不涉及不必要的行。
    • @TimSchmelter 哦,对不起;我误读了你的评论;我在互联网上失败了——是的,那会奏效;但听起来(OP 对我的评论)这不是一个选择
    猜你喜欢
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 2021-02-24
    • 1970-01-01
    • 2010-12-30
    相关资源
    最近更新 更多