将null值替换为默认文本

本文关键字:默认 文本 替换 null | 更新日期: 2024-10-22 19:15:16

我知道这个问题已经被问过很多次了,但我有下面的一段代码,我试图用它来默认null值。有人能帮我吗?我试过这个代码,但它没有给我空值的"NO DATA",而是什么都不显示。不确定我哪里错了。

更多详细信息:此代码不会将null值替换为"NO DATA"字符串。这里怎么了?我需要更改什么才能显示"无数据"?

protected override void Execute(NativeActivityContext context)
    {
        DataSet dataset = GetDataSet.Get(context);
        foreach (DataTable dt in dataset.Tables)
        {
            foreach (DataRow row in dataset.Tables[0].Rows)
            {
                if (row["USER_COMMENT"] is System.DBNull)
                {
                    ConvertNullToEmptyString(dt);
                    Console.WriteLine("In if");
                }
                else
                {
                    Console.WriteLine("out if");
                }
            }
        }
         TransformResult.Set(context, dataset);
    }

    private static string ConvertNullToEmptyString(DataTable element)
    {
        if (element.Rows[0]["USER_COMMENT"] == DBNull.Value || element.Rows[0]["USER_COMMENT"] == null)
        {
            return "NO DATA";
        }
        else
        {
            return element.Rows[0]["USER_COMMENT"].ToString();
        }
    }

将null值替换为默认文本

以下是我要做的

String stringtocompare;
     if(String.isnullorwhitespace(stringtocompare)){
         stringtocompare = "No VALUE";
      }

不需要额外的功能。你只需要在循环中插入"无数据",就像下面的一样

 foreach (DataRow row in dataset.Tables[0].Rows)
        {
            if (row["USER_COMMENT"] is System.DBNull)
            {
                row["USER_COMMENT"] = "NO DATA";
                Console.WriteLine("In if");
            }
            else
            {
                Console.WriteLine("out if");
            }
        }

有几件事可能会有所帮助:

你可能想改变这个:

foreach (DataTable dt in dataset.Tables)
    {
        foreach (DataRow row in dataset.Tables[0].Rows)
        {
        ...

到此:

foreach (DataTable dt in dataset.Tables)
    {
        foreach (DataRow row in dt.Rows)
        {
        ...

否则,您将只查询循环中的一个表。

此外,我会使用String.IsNullOrEmpty()来查询数据。

如果不需要第二个函数,可以尝试以下操作:

protected override void Execute(NativeActivityContext context) {
  DataSet dataset = GetDataSet.Get(context);
  foreach(DataTable dt in dataset.Tables) {
    foreach(DataRow row in dt.Rows) {
      row["USER_COMMENT"] = String.IsNullOrEmpty(row["USER_COMMENT"].ToString()) ? "NO DATA" : row["USER_COMMENT"];
    }
  }
  TransformResult.Set(context, dataset);
}

但是,如果有第二个函数要转换,它会看起来像这样:

protected override void Execute(NativeActivityContext context) {
  DataSet dataset = GetDataSet.Get(context);
  foreach(DataTable dt in dataset.Tables) {
    foreach(DataRow row in dt.Rows) {
      row["USER_COMMENT"] = ConvertNullToEmptyString(row["USER_COMMENT"]);
    }
  }
  TransformResult.Set(context, dataset);
}
private static object ConvertNullToEmptyString(object element) {
  if(String.IsNullOrEmpty(element.ToString())) {
    return "NO DATA";
  } else {
    return element;
  }
}

使用空字符串而不是空

if(row["USER_COMMENT"] == string.Empty)

你试过吗

私有静态字符串ConvertNullToEmptyString(DataTable元素){if(string.IsNullOrEmpty(element.Rows[0]["USER_COMMENT"])){return"无数据";}其他的{返回元素。行[0]["USER_COMMENT"].ToString();}}