我的程序处理此错误的原因:无法执行'=';对System.DateTime和System.Int32的操作
本文关键字:System 操作 Int32 DateTime 错误 处理 程序 我的 执行 | 更新日期: 2023-09-27 18:27:22
为什么我的代码抛出错误Cannot perform '=' operation on System.DateTime and System.Int32.
,
这行抛出错误:
DataRow[] dr = ds.Tables[0].Select("HolidayDate=" + SelectedDate);
但当我通过像"#12014-10-12#"这样的静态日期时,它就起作用了,我还用selectedDate添加了#,但程序当时没有响应。
完整代码:
protected void Calndar_SelectionChanged(object sender, EventArgs e)
{
string SelectedDate = Calndar.SelectedDate.ToString(DateTime.Now.ToString("yyyy") + "-" + "MM-dd");
DataSet ds = (DataSet)Session["Calendar"];
DataRow[] dr = ds.Tables[0].Select("HolidayDate=" + SelectedDate);
foreach (DataRow drr in dr)
{
Response.Write(SelectedDate);
}
string SelectedDate存储值并显示在response.write 中
更新后的代码也不起作用
protected void Calndar_SelectionChanged(object sender, EventArgs e)
{
DateTime SelectedDate =new DateTime(DateTime.Now.Year, Calndar.SelectedDate.Month, Calndar.SelectedDate.Day);
DataSet ds = (DataSet)Session["Calendar"];
IEnumerable<DataRow> selectedRows = ds.Tables[0].AsEnumerable().Where(row => (row.Field<DateTime>("HolidayDate") == SelectedDate));
foreach (DataRow drr in selectedRows)
{
Response.Write(drr[4]);
}
}
如果您想避免此类日期序列化问题,可以使用Linq to DataSet:
DateTime selectedDate =
new DateTime(DateTime.Now.Year, Calndar.SelectedDate.Month, Calndar.SelectedDate.Day);
DataSet ds = (DataSet)Session["Calendar"];
IEnumerable<DataRow> selectedRows = ds.Tables[0].AsEnumerable().
Where(row => (row.Field<DateTime>("HolidayDate") == selectedDate));
foreach (DataRow selectedRow in selectedRows)
...