String.IsNullOrEmpty и Datarow.IsXnull - PullRequest
       18

String.IsNullOrEmpty и Datarow.IsXnull

1 голос
/ 13 апреля 2010

Как я могу улучшить этот код? Это привело к тому, что я не могу использовать string.IsNullOrEmpty в строке данных, и вместо этого мне нужно использовать метод dr.IsHOUSENUMBERNull И строку. Почему это? Столбец в базе данных иногда пуст, а иногда 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

Ответы [ 2 ]

3 голосов
/ 13 апреля 2010

Вы можете сделать это, немного короче:

 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))
0 голосов
/ 13 апреля 2010

Существует разница между NULL базы данных и null .NET (* VB Ничего при применении к ссылочным типам).

string.IsNullOrEmpty ищет значение .NET, а не NULL базы данных. Таким образом, нет необходимости проверять на ноль - только NULL / DBNull

Если вы сохраните NULL базы данных или ноль .NET в DataTable, вы получите DBNull.

AppendLine (объект) вызова объекта. ToString ()

DBNull.Value.ToString () возвращает ""

Учитывая всю эту информацию, ваш код может быть упрощен до:

sbAddress.Append(dr.HOUSENUMBER)
If Not dr.IsHOUSENUMBERNull AndAlso dr.HOUSENUMBER.Length <> 0 Then
    sbAddress.Append(" ")
End If
sbAddress.AppendLine(dr.ADDRESS1)  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...