我正在尝试按日期过滤我的DataView:
DataTable dt = GetTableData();
DataView dvEvents = dt.DefaultView;
dvEvents.RowFilter = "date > #" + DateTime.Now.ToString() + "#";
但是我收到了这个错误:
无法执行'>' System.String和System.DateTime上的操作。
我也试过了DateTime.Now.ToString("MM/dd/yyyy")
,我也遇到了同样的错误。
我在这里做错了什么?
答案 0 :(得分:8)
如果您使用字符串值,则需要将#
替换为'
。
例如:
dvEvents.RowFilter = "date > '" + DateTime.Now.ToString() + "'";
答案 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") + "'";
希望这有助于某人。