Правильное решение здесь (по крайней мере, пока вы не сообщите нам, почему это невозможно) - обновить базу данных, чтобы использовать тип столбца datetime, а не varchar. Теперь мы также знаем, что в этом столбце нет значений NULL, потому что в противном случае вы будете жаловаться на исключения в вашем вызове Date.Parse()
. После применения обоих этих предложений вы можете обрезать весь этот код до простой строки:
Dim day As Integer = DirectCast(dt.Rows(i)("Date"), DateTime).DayOfWeek
Могу я также спросить, почему вы просматриваете таблицу строка за строкой? Я работал в магазине, где это было нормой, но с тех пор, как я уехал оттуда, я сталкиваюсь с альтернативами, и все больше и больше я прихожу к выводу, что перебирать данные можно просто неправильно. Это старый императивный стиль кодирования, и обычно вы хотите использовать декларативный стиль кодирования.