Vb.net 如何检查每列上的DataRow.isdbnull并将其替换为值
我将数据从Excel导入到datatable,我必须遍历每一列进行计算。我的列的类型为Double、date和string。我有时会遇到Null reference异常,因为某些列可能缺少数据。在双精度的情况下,如何将dbnull自动替换为0,在日期的情况下,如何将dbnull替换为00/00/00。这是我的部分代码Vb.net 如何检查每列上的DataRow.isdbnull并将其替换为值,vb.net,Vb.net,我将数据从Excel导入到datatable,我必须遍历每一列进行计算。我的列的类型为Double、date和string。我有时会遇到Null reference异常,因为某些列可能缺少数据。在双精度的情况下,如何将dbnull自动替换为0,在日期的情况下,如何将dbnull替换为00/00/00。这是我的部分代码 Dim dict As Dictionary(Of String, List(Of DataRow)) = dt.AsEnumerable() _ .GroupB
Dim dict As Dictionary(Of String, List(Of DataRow)) = dt.AsEnumerable() _
.GroupBy(Function(x) x.Field(Of String)("USER_picking"), Function(y) y) _
.ToDictionary(Function(x) x.Key, Function(y) y.ToList())
datasource.Columns.Add("Date", GetType(String))
datasource.Columns.Add("USERID", GetType(String))
datasource.Columns.Add("Number_Ords", GetType(Integer))
datasource.Columns.Add("Total_Pkg", GetType(Double))
datasource.Columns.Add("Orders", GetType(Double))
datasource.Columns.Add("Packages", GetType(Double))
datasource.Columns.Add("Orders1", GetType(Int32))
datasource.Columns.Add("Packages1", GetType(Double))
datasource.Columns.Add("Orders2", GetType(Int32))
datasource.Columns.Add("Packages2", GetType(Double))
datasource.Columns.Add("Orders3", GetType(Int32))
datasource.Columns.Add("Packages3", GetType(Double))
datasource.Columns.Add("Orders4", GetType(Int32))
datasource.Columns.Add("Packages4", GetType(Double))
datasource.Columns.Add("Orders5", GetType(Int32))
datasource.Columns.Add("Packages5", GetType(Double))
datasource.Columns.Add("Orders6", GetType(Int32))
datasource.Columns.Add("Packages6", GetType(Double))
For Each id As String In dict.Keys
Dim OrderList As New List(Of Double)
Dim rows As List(Of DataRow) = dict(id)
For Each row As DataRow In rows
Dim current As Double = (row("packages"))
OrderList.Add(current)
'Timelist.Add(currenttime)
Next row
Dim currenttime = From row In rows '''' expcetion here
Let time = row.Field(Of Date)("paid")
Where (time.TimeOfDay >= New TimeSpan(8, 0, 0) AndAlso time.TimeOfDay <= New TimeSpan(10, 0, 0))
Select paid = row.Item("paid"), packages = row.Item("packages") Distinct
Dim plist As New List(Of Date)
For Each p In currenttime
plist.Add(p.paid)
Next
Dim palist As New List(Of Double)
For Each pa In currenttime
palist.Add(pa.packages)
Next
DBNull表示缺少某些数据,NullReference表示对象不存在。查看WHERE子句是否导致未选择任何内容,这可能/将导致下一行上的行引用抛出所述dbNull而非nullReference异常的nRestory I should。WHERE子句在一个空单元格之前选择了一些行。