Прошло какое-то время с тех пор, как я сделал немного VB, вы наверняка могли бы сделать следующее?
Dim data() AS DataRow = dt.Select()
Dim sortedData = data.OrderBy(Function(x) CInt([Enum].Parse(GetType(DayOfWeek), x.Item("DayLog"))) )
Dim sortedDataTable = dt.Clone()
For Each row In sortedData
sortedDataTable.ImportRow(row)
Next
Предполагая, что написание ваших дней недели на 100% правильно
Если у вас есть строковое значение текущего дня недели или вы знаете значение int, то вы можете настроить сортировку, используя модуль
например.
Dim todayStringVal = "Tuesday" // say you have this value from somewhere
Dim today = CInt([Enum].Parse(GetType(DayOfWeek), todayStringVal)) // convert to day of the week enum
Dim sortedData = data.OrderBy(Function(x) CInt(([Enum].Parse(GetType(DayOfWeek), x.Item("DayLog")) + 7 - today)) Mod 7) // Apply sorting
Наконец, если вы хотите, чтобы приведенный выше фрагмент сортировался так, чтобы значение today
находилось в конце списка, просто измените OrderBy
на OrderByDescending
РЕДАКТИРОВАТЬ
Для обеспечения * 1020Значение * появляется первым в вашем списке, даже если индекс DayOfWeek
начинается с 0, вам нужно + 7 и вычесть индекс, а затем мод на 7, чтобы получить правильный индекс для сортировки по
, например.Субботний индекс для перечисления DayOfWeek
равен 6, поэтому 6 + 7 (дни недели) = 13, затем вычтите на 6 = 7 и, наконец, 7 mod 7 равен 0, поэтому новый субботний индекс становится 0 и упорядочивается первым в списке