Сравнить даты в DataView.RowFilter?

Я почесываю голову над чем-то довольно глупым, но, по-видимому, трудно.

DataView dvFormula = dsFormula.Tables[0].DefaultView;
dvFormula.RowFilter = "'" + startDate.ToString("yyyyMMdd") + "' < EndDate OR EndDate = '19000101'";
dvFormula.Sort = "FromDate ASC";

В результате получится следующее:

Невозможно выполнить '<' операции в System.String и System.DateTime.

Скажите, пожалуйста, какой лучший способ решить эту проблему.

Очень ценно!

Ответ 1

Вам нужно привязать свои даты к #, а не апострофам.

dvFormula.RowFilter = "#" + startDate.ToString("MM/dd/yyyy") + "# < EndDate OR EndDate = #1/1/1900#"; 

Ответ 2

Это решение. Попробуйте следующее:

filter = " (Date >= #" +
         Convert.ToDateTime(txtFromDate.Text).ToString("MM/dd/yyyy") +
         "# And Date <= #" +
         Convert.ToDateTime(txtToDate.Text).ToString("MM/dd/yyyy") +
         "# ) ";

Ответ 3

В зависимости от поставщика данных вам может понадобиться избегать дат с символом #, а не с символом '. Кроме того, я отформатировал ваши даты в формате YYYY-MM-DD, чтобы убедиться, что он правильно распознан как дата.