4

我正在尝试按日期过滤我的 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

4 回答 4

8

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

例如:

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

请参阅此参考

于 2013-04-23T19:49:30.627 回答
2

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

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

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

或者您可以date变成实际DateTime列并保留当前代码

于 2013-04-23T19:51:09.393 回答
0

我有一个类似的问题,并且已经建议的解决方案都没有奏效。一个解决方法是使用

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

希望这可以帮助某人。

于 2014-07-01T02:21:29.740 回答
0

如果日期来自数据库,那么您必须在进行比较之前进行语言环境转换。

于 2013-04-24T07:05:59.370 回答