2014-10-22 37 views
0

'=' 操作爲什麼我的代碼拋出錯誤 Cannot perform '=' operation on System.DateTime and System.Int32.爲什麼我的程序thorws此錯誤:無法執行上的System.DateTime和System.Int32

此行拋出錯誤:

DataRow[] dr = ds.Tables[0].Select("HolidayDate=" + SelectedDate); 

但是當我傳遞了像「#2014-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); 
    } 

字符串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]); 
    } 
} 
+0

你的.SelectedDate.ToString()看起來很奇怪。我會嘗試設置所需的日期(當前年份),然後將其格式化爲yyyy-MM-dd字符串格式。但是,如果您的HolidayDate列是日期時間數據類型,則vc74的答案是首選方式。 – Filburt 2014-10-22 10:37:51

+0

檢查我的更新的代碼 – 2014-10-22 10:48:48

+0

什麼不行? – 2014-10-22 11:08:07

回答

0

系列化問題,您可以使用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) 
... 
+0

不工作程序在點擊日期沒有迴應 – 2014-10-22 10:44:09

+0

檢查我更新的代碼 – 2014-10-22 10:45:03

相關問題