VB.NET Dataview Rowfilter по времени
Я хотел бы расширить свой dataview
фильтрация. Некоторые таблицы содержат datetime
колонны.
Поиск по указанной дате уже реализован, но как можно найти временной шаблон, например 10:20?
Мое текущее утверждение выглядит следующим образом, который кажется правдоподобным, но не работает:
"columnname >= '10:20:00' AND columnname <= '10:20:59'"
Есть ли что-то вроде time()
функция, например "time(columnname) >= '10:20...
Может быть, другой способ избежать ненужной части даты, например: >= '% 10:20...
?
Не можете найти ничего связанного с этим вопросом? Я действительно первый, кто хочет такую функциональность?
2 ответа
Вы можете использовать Linq (Imports System.Linq) для этого, добавив ссылку System.Data.DataSetExtensions в ваш проект и выполнив:
Dim rows As DataRow() = (From row In myDatatable.AsEnumerable
Where row.Field(Of DateTime)("column").Hour > 10).ToArray()
Или еще лучше:
Dim time As New TimeSpan(10, 20, 59)
Dim rows As DataRow() = (From row In myDatatable.AsEnumerable
Where row.Field(Of DateTime)("column").TimeOfDay > time).ToArray()
Я придумал следующее решение:
RowFilter = Convert (имя столбца, 'System.String') как "% " & pTime.ToString("чч: мм") & "%"
Это все, что мне нужно на данный момент. Для поиска>=/<=/ Я мог бы вернуться к предложению Eskos.
Спасибо