2015-10-08 3 views
0

Я уверен, что это довольно простой, но я не могу найти ответ в любом месте ...«ошибка DBNull» при подведении колонки по DataTable с помощью LINQ

я пытаюсь суммировать числовые значения из datatable using linq, но из-за того, что в столбце K также есть нулевые значения, я получаю сообщение об ошибке: Cannot cast DBNull.Value to type 'System.Int32'. Please use a nullable type. Каков правильный синтаксис для преодоления этой ошибки?

Private table1 As DataTable 
Private Function getIncome(ByVal acName As String, ByVal acTeam As String) As Integer 
    Dim query = table1.AsEnumerable().Where(Function(x) x.Field(Of String)("G") = acName AndAlso x.Field(Of String)("F") = acTeam _ 
        ).Sum(Function(x) x.Field(Of Integer)("K")) 

    Dim total As Integer = query 
    Return total 
End Function 

ответ

0

Эта линия:

Sum(Function(x) x.Field(Of Integer)("K"))

Должен быть заменен следующим образом:

Sum(Function(x) x.Field(Of Integer?)("K"))

Значение по умолчанию для int возвращается (0), используя Field<T>() метод, если Возвращается DBNull.Value, поэтому его можно использовать, см. мой другой ответ на этот вопрос здесь

Object initializing with db null check

+0

работает отлично! спасибо за показ и объяснение этой проблемы. – Jonathan

+1

добро пожаловать! – Ric

Смежные вопросы