'Conversion of type string " " to double not valid exception in vb.net code

I am trying to upload a csv file that has two records in it. The below code executed for two times and third time I got this exception----Conversion of type string " " to double not valid I put a debugger where I found the values of two colums of excel sheet but third time I am getting this exception. Your help is highly appreciated. Below is the code.

  Public Function GetLocationInformation(stream As Stream) As List(Of CsvPropLocation) _
        Implements ICsvHandling.GetLocationInformation
        If stream Is Nothing Then Return Nothing

        Dim locations = New List(Of CsvPropLocation)
        Using reader = New StreamReader(stream)
            Dim config = New CsvConfiguration(CultureInfo.InvariantCulture) With {
                .HasHeaderRecord = True,
                .IgnoreBlankLines = False
            }
            Using csv = New CsvReader(reader, config)
                Using dataReader As New CsvDataReader(csv)
                    Dim dt = New DataTable()
                    dt.Load(dataReader)
                    For Each row As DataRow In dt.Rows
                        Dim propLocation As CsvPropLocation
                        'find or create a propLocation
                        If locations.Any(Function(x) x.nLocationNumber = row("LocNum")) Then       ######Got exception here ######
                            propLocation = locations.First(Function(x) x.nLocationNumber = row("LocNum"))
                        Else
                            propLocation = New CsvPropLocation(row("LocNum"))
                            locations.Add(propLocation)
                        End If
                        'do building stuff.
                        Dim building = ParseRowIntoBuilding(row)
                        propLocation.AddBuilding(building)
                    Next
                End Using
            End Using
        End Using
        Return locations
    End Function


Solution 1:[1]

Change your line to

Dim number As Double
If Double.TryParse(row("LocNum"), number ) AndAlso locations.Any(Function(x) x.nLocationNumber = number )

This way you make sure number will be evaluated only if it gets a valid value from row("LocNum")

Also keep in mind the Else part must be controlled as New CsvPropLocation(row("LocNum")) probably is expecting a valid Double which isnt inside locations so, change to:

Else If Double.TryParse(row("LocNum"), number ) 'You can check against number = 0 
         'if zero isn't a valid value for number 
         '(or initialize number to a known invalid value and check against it)
         'if yuo didn't want a double try parse
    propLocation = New CsvPropLocation(number)
    locations.Add(propLocation)
End If

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1