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.

Спасибо

Другие вопросы по тегам