我的程序处理此错误的原因:无法执行'=';对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]);
    }
}

我的程序处理此错误的原因:无法执行'=';对System.DateTime和System.Int32的操作

如果您想避免此类日期序列化问题,可以使用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) 
...