Особливості роботи з DataView, RowFilter та datetime, Записна книжка програміста-новачка, C#, SQL

Я ж це вже робив, але хрін тепер знайдеш той шматок коду, гуглимо знову… Де знайти простий і зрозумілий посібник для початківця, а не тонкощі для мега-гуру?

Навігація за записами

Особливості роботи з DataView, RowFilter та datetime

Завдання: відфільтрувати дані, завантажені з бази DataTable (DataSet) і DataGridView без повторного звернення до БД. У C# і WinForms для цього можна використовувати властивість RowFilter класів BindingSource.Filter та DataView.RowFilter. Насправді BindingSource просто передає умову фільтрації в DataView або DataTable (в останньому випадку умови від різних BindingSource будуть перезаписуватися), так що первинна властивість RowFilter, в яку пишеться текстова умова з синтаксисом, що дуже нагадує Sql.

Синтаксис RowFilter збігається з синтаксисом властивості DataColumn.Expression, документацію до якого і треба використовувати дивовижному програмісту. Проте в роботі цієї властивості вистачає підводних каменів та неочевидних моментів:

1. Умова від та до, ключове слово BETWEEN – банально не працює. Замість нього треба використовувати комбінацію простіших виразів, наприклад

2. Дата. Перетворені в рядок значення datetime треба обертати не на лапки, а на знак ґрат #

3. Регіональні налаштування дати не враховуються. Для використання в RowFilter дату треба самостійно перетворити на формат місяць-день-рік.

Якщо такі фільтри часто формуються, можна зробити функцію