用默认文本替换空值

时间:2013-12-18 05:25:19

标签: c# default isnull

我知道这个问题已被多次询问,但是我有以下一段代码,我试图用来默认空值。有人可以帮帮我吗。我尝试了这段代码,但没有给出空值的“NO DATA”,它没有显示任何内容。不知道我哪里错了。

更多细节:此代码不会将空值替换为“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();
        }
    }

6 个答案:

答案 0 :(得分:3)

这是我要做的事情

String stringtocompare;

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

答案 1 :(得分:2)

可能会有所帮助的一些事情:

您可能想要更改此内容:

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)
        {
        ...

否则你只会在循环中查询1个表。

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

答案 2 :(得分:1)

如果您不需要第二个功能,请尝试以下方法:

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;
  }
}

答案 3 :(得分:1)

那里不需要额外的功能。您只需在循环中插入“无数据”,如下所示

 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");
            }
        }

答案 4 :(得分:0)

使用空字符串而不是空

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

答案 5 :(得分:0)

你试过吗

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