Attention: We are retiring the ASP.NET Community Blogs. Learn more >

Compute is not a cultured method

Even though, in the constructor for my WinForms app I do this...

    Thread.CurrentThread.CurrentCulture = New CultureInfo("en-AU")

I'm finding that the MIN, MAX functions for DataTable querying seem to use en-US under-the-covers...

    ' cannot use ADO.NET syntax
    mdtmMinDate = Convert.ToDateTime(mobjTimeSheetGrid.Compute("MIN(TimesheetDate)", ""))
    mdtmMaxDate = Convert.ToDateTime(mobjTimeSheetGrid.Compute("MAX(TimesheetDate)", ""))

So, I had to roll my own :(

    ' cannot use ADO.NET syntax
    mdtmMinDate = Convert.ToDateTime(mobjTimeSheetGrid.Compute("MIN(TimesheetDate)", ""))
    mdtmMaxDate = Convert.ToDateTime(mobjTimeSheetGrid.Compute("MAX(TimesheetDate)", ""))
    For Each row As TimeSheet.TimeSheetRow In vobjTimesheetGrid.Rows 
        Dim tmpDate As String = row.TimesheetDate 
        If CDate(tmpDate).CompareTo(mdtmMinDate) = -1 Then 
            mdtmMinDate = CDate(tmpDate) 
        End If 
        If CDate(tmpDate).CompareTo(mdtmMaxDate) = 1 Then 
            mdtmMaxDate = CDate(tmpDate) 
        End If 
    Next

Further information about Compute method:

DataTable.Compute - the filter parameter
Compute - MS docs

No Comments