Как заказать Datatable по значению строки? - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть таблица данных ниже, как я могу отсортировать таблицу данных по имени Сегодня, поэтому, например, если сегодня понедельник, он должен отображаться в конце таблицы данных

Я попробовал следующее, но этоне работает

Dim dv As DataView = dt3.DefaultView
    dv.Sort = " DayLog desc"
    Dim sortedDT = dv.ToTable()

enter image description here

1 Ответ

1 голос
/ 23 сентября 2019

Прошло какое-то время с тех пор, как я сделал немного 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 и упорядочивается первым в списке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...