Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用默认文本替换空值_C#_Default_Isnull - Fatal编程技术网

C# 用默认文本替换空值

C# 用默认文本替换空值,c#,default,isnull,C#,Default,Isnull,我知道这个问题已经被问过很多次了,但是我有下面的一段代码,我正试图使用它来默认空值。谁能帮帮我吗。我尝试了这段代码,但是没有为空值提供任何数据,它没有显示任何内容。我不知道我会错在哪里 更多详细信息:此代码不会用无数据字符串替换空值。这里怎么了?我需要更改什么才能使其不显示数据 protected override void Execute(NativeActivityContext context) { DataSet dataset = GetDataSet.Get(

我知道这个问题已经被问过很多次了,但是我有下面的一段代码,我正试图使用它来默认空值。谁能帮帮我吗。我尝试了这段代码,但是没有为空值提供任何数据,它没有显示任何内容。我不知道我会错在哪里

更多详细信息:此代码不会用无数据字符串替换空值。这里怎么了?我需要更改什么才能使其不显示数据

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

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

使用空字符串而不是null

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

这就是我要做的

String stringtocompare;

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

这就是我要做的

String stringtocompare;

     if(String.isnullorwhitespace(stringtocompare)){
         stringtocompare = "No VALUE";
      }
你试过了吗

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(); } } 你试过了吗

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(); } }
以下几点可能会有所帮助:

您可能希望更改此设置:

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)
        {
        ...
否则,您将只查询循环中的一个表


此外,我还可以用它来查询数据。

以下几点可能会有所帮助:

您可能希望更改此设置:

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)
        {
        ...
否则,您将只查询循环中的一个表


此外,我还可以使用它来查询数据。

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

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

如果不需要第二个函数来执行此操作,请尝试以下操作:

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

那里不需要额外的功能。您只需在循环中插入No DATA,如下所示

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

那里不需要额外的功能。您只需在循环中插入No DATA,如下所示

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

ConvertNullToEmptyString似乎不返回任何数据,但您从未使用返回值。是的,我认为您是对的,我应该怎么做?无法测试atm,但我会尝试纯var user\u comment=row.FieldUSER\u comment??没有数据;要获取USER_COMMENT的值或字符串NO DATA(如果为DBNull)。替换实际数据行中的值相当慢,而且没有必要。多亏了您的建议,我找到了答案。如果您想将您的评论作为答案发布,我可以将其标记为答案。TY.ConvertNullToEmptyString似乎不返回任何数据,但您从未使用返回值。是的,我认为您是对的,我应该怎么做?无法测试atm,但我会尝试纯var user\u comment=row.FieldUSER\u comment??没有数据;要获取USER_COMMENT的值或字符串NO DATA(如果为DBNull)。替换实际数据行中的值相当慢,而且没有必要。多亏了您的建议,我找到了答案。如果您想将您的评论作为答案发布,我可以将其标记为答案。但行[USER\u COMMENT]的类型为object。我收到一个错误抱歉,但这似乎不起作用。它只是在不检查条件的情况下退出循环,但行[USER\u COMMENT]的类型为object。我收到一个错误抱歉,但这似乎不起作用。它只是退出循环,不检查条件。此解决方案工作得很好。我不确定是否有任何额外的检查我需要做,但目前,这是我需要的。谢谢。要检查空值,这个条件就足够了。但如果您还想检查空字符串值,只需在if-like-if行[USER_COMMENT]为System.DBNull | | row[USER_COMMENT]==string.empty时再添加一个条件。此解决方案效果非常好。我不确定是否有任何额外的检查我需要做,但目前,这是我需要的。谢谢。要检查空值,这个条件就足够了。但是,如果还想检查空字符串值,只需在if like if行[USER_COMMENT]为System.DBNull | | row[USER_COMMENT]==string.empty时再添加一个条件即可。