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时再添加一个条件即可。