14

我正在为一些相当愚蠢但显然很困难的事情挠头。

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

结果是这样的:

无法对 System.String 和 System.DateTime 执行“<”操作。

请告诉我解决这个问题的最佳方法是什么。

非常感激!

4

3 回答 3

26

您需要用# 来包装日期,而不是撇号。

dvFormula.RowFilter = "#" + startDate.ToString("MM/dd/yyyy") + "# < EndDate OR EndDate = #1/1/1900#"; 
于 2010-08-27T13:28:42.973 回答
11

这就是解决方案。试试这个:

filter = " (Date >= #" +
         Convert.ToDateTime(txtFromDate.Text).ToString("MM/dd/yyyy") +
         "# And Date <= #" +
         Convert.ToDateTime(txtToDate.Text).ToString("MM/dd/yyyy") +
         "# ) ";
于 2011-05-25T12:56:56.563 回答
4

根据您的数据提供者,您可能需要使用#字符而不是'字符来转义日期。此外,我会将您的日期格式化为格式YYYY-MM-DD,以确保它可以被正确识别为日期。

于 2010-08-27T13:27:49.583 回答