无法执行'>' System.String和System.DateTime上的操作

时间:2013-04-23 19:44:39

标签: c# asp.net

我正在尝试按日期过滤我的DataView:

DataTable dt = GetTableData();
DataView dvEvents = dt.DefaultView;
dvEvents.RowFilter = "date > #" + DateTime.Now.ToString() + "#";

但是我收到了这个错误:

  

无法执行'>' System.String和System.DateTime上的操作。

我也试过了DateTime.Now.ToString("MM/dd/yyyy"),我也遇到了同样的错误。

我在这里做错了什么?

4 个答案:

答案 0 :(得分:8)

如果您使用字符串值,则需要将#替换为'

例如:

dvEvents.RowFilter = "date > '" + DateTime.Now.ToString() + "'";

请参阅this reference

答案 1 :(得分:2)

看起来date被定义为字符串。你有两个选择。

您可以确保字符串以yyyyMMdd格式存储(以便排序和过滤正常工作)并过滤如下:

 dvEvents.RowFilter = "date > '" + DateTime.Now.ToString("yyyyMMdd") + "'";

或者您可以将date转换为实际的DateTime列并保留当前代码

答案 2 :(得分:0)

如果日期来自数据库,则必须在进行比较之前进行区域设置转换。

答案 3 :(得分:0)

我有一个类似的问题,并且没有一个已提出的决议有效。 解决方法是使用

DataTable dt = GetTableData();
DataView dvEvents = dt.DefaultView;
dvEvents.RowFilter = "date > '" + DateTime.Now.ToString("MM/dd/YYYY") + "'";

希望这有助于某人。