【问题标题】:String.IsNullOrEmpty and Datarow.IsXnullString.IsNullOrEmpty 和 Datarow.IsXnull
【发布时间】:2010-04-13 10:25:49
【问题描述】:

如何改进此代码?让这个冗长的事实是,我不能在数据行上使用 string.IsNullOrEmpty,而是必须使用 dr.IsHOUSENUMBERNull 方法和 string.IsNullOrEmpty 来检查它是否为空。为什么是这样?数据库中的列有时为空,有时为 NULL。

我相信这可以写得更好:

     If Not dr.IsHOUSENUMBERNull Then
           If Not String.IsNullOrEmpty(dr.HOUSENUMBER) Then
                sbAddress.AppendLine(dr.HOUSENUMBER + " " + dr.ADDRESS1)
           Else
                sbAddress.AppendLine(dr.ADDRESS1)
           End If   
     Else
           sbAddress.AppendLine(dr.ADDRESS1)      
     End If

【问题讨论】:

    标签: vb.net datatable


    【解决方案1】:

    你可以这样做,稍微短一点:

     If dr.IsHOUSENUMBERNull OrElse String.IsNullOrEmpty(dr.HOUSENUMBER) Then
           sbAddress.AppendLine(dr.ADDRESS1) 
     Else     
           sbAddress.AppendLine(dr.HOUSENUMBER + " " + dr.ADDRESS1)
     End If
    

    或者,如果您希望它更简洁,尽管我认为在这种情况下可读性较差,请使用If()

    sb.Address.AppendLine(If(r.IsHOUSENUMBERNull OrElse String.IsNullOrEmpty(dr.HOUSENUMBER), dr.ADDRESS1, dr.HOUSENUMBER + " " + dr.ADDRESS1))
    

    【讨论】:

    • 如果 dr.HOUSENUMBER 包含 DBNull,您的两个样本都会抛出异常。您应该使用 OrElse (短路)而不是 Or
    • @Alfred - 感谢您提醒我为什么不再使用 VB :) 已修复!
    猜你喜欢
    • 2011-01-25
    • 1970-01-01
    • 2013-11-11
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多