我知道这个问题已被多次询问,但是我有以下一段代码,我试图用来默认空值。有人可以帮帮我吗。我尝试了这段代码,但没有给出空值的“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();
}
}
答案 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(); } }