dbnull 일 때 기본값을 가진 DataTable에서 객체를 채우는 객체
-
19-09-2019 - |
문제
아래와 같이 고객 객체를 채우고 있습니다. 다음과 같은 것을 어떻게 간결하게 코딩합니까?
If IsDbNull(.Age) Then
.Age = 10
Else
.Age = dataRow("Age")
End If
다음은 다음과 같이 사용하고 싶은 컨텍스트입니다.
Public Shared Function Retrieve() As List(Of Customer)
Dim dt As DataTable = Dac.ExecuteDataTable("CustomerRetrieveAll", Nothing)
Dim customerList As New List(Of Customer)
For Each dr As DataRow In dt.Rows
customerList.Add(New Customer {
.CustomerId = CType(dr("CustomerID"), Integer),
.LastName = dr("LastName").ToString,
.Age = dr("Age").ToString,
.FirstName = dr("FirstName").ToString})
Next
Return customerList
End Function
해결책
내 Microsoft.VisualBasic
네임 스페이스 호출 된 함수가 있습니다 IIF
. 표현식을 평가하고 표현식이 참이면 하나의 값을 반환하고 다른 값이 거짓 인 경우 작동합니다.
그래서
.Age = IIF(dr("Age") = DBNull.Value, 10, dr("Age").ToString())
최신 버전의 Visual Studio (2008 ~)에서 가져 오기 가져 오기없이 기본적으로 사용할 수 있습니다.IIF
기능, 새로운 것입니다 If
연산자입니다) :
.Age = If(dr("Age") = DBNull.Value, 10, dr("Age").ToString())
그렇지 않은 경우 DBNull
, 그러나 그냥 Nothing
, 당신은 null-coalescing 연산자를 사용할 수 있습니다 :
Dim val = If(objectThatMightBeNothing, DefaultValueToUse)
보다 MSDN 자세한 내용은.
다른 팁
이것을 시도 했습니까? :
.Age = IIf(dr("age") is DbNull, 10, dr("age"))
도움이되기를 바랍니다.
널을 함유하면 나이가 가질 수있는 가치는 무엇입니까?
나이에 nullable (정수)을 사용하는 것이 좋습니다.
또한 dbnull.Value와 비교하십시오 (기본 필드에 널 값이 포함 된 경우 비교에 사용됨).
제휴하지 않습니다 StackOverflow