使用linq查询的DateFormat问题(之间)

时间:2015-04-16 08:02:11

标签: c# asp.net linq linq-to-sql datetime-format

我正在使用linq中的查询。方案是我选择开始日期和结束日期,并希望在这些日期之间检索数据。在本地系统上它的工作正常,但是当我在服务器上部署它时,它会抛出异常。

  

字符串未被识别为有效的DateTime。

需要以文本框格式输入的数据: 04/01/2015

以数据库格式存储的数据: 2013-10-23 12:35:56.593

protected void _btnSearch_Click(object sender, EventArgs e)
    {
        using (DataClassesCABEEDataContext db = new DataClassesCABEEDataContext())
        {
            var query = (from a in db.Jobs where 
                         (a.Job_DateTime >= Convert.ToDateTime(_txtFrom.Text)
                         && a.Job_DateTime <= Convert.ToDateTime(_txtTo.Text)) //using add watch here
                         select new
                         {
                             Reference = a.Job_No,
                             Booking_Time = a.Job_DateTime.Value.ToString("HH:mm", CultureInfo.CurrentCulture),                                 
                             Cust_Name = a.CustName,                                 
                             Price = a.Price,                             
                         });

            GridView1.DataSource = query;
            GridView1.DataBind();
        }  
    }

当我在上面的注释行代码中使用add watch时调试代码会抛出异常。 _txtTo.Text抛出此异常。当在_txtFrom.text位置放置_txtTo.text之间交换文本框时,反之亦然,然后在_txtFrom.text上抛出异常。相比之下,第一部分获得日期,但第二部分没有。

1 个答案:

答案 0 :(得分:0)

如果您知道日期格式,则应使用 DateTime.ParseExact

 (a.Job_DateTime >= DateTime.ParseExact(_txtFrom.Text, "dd/MM/yyyy",  CultureInfo.InvariantCulture)
                && a.Job_DateTime <=  DateTime.ParseExact(_txtTo.Text, "dd/MM/yyyy",CultureInfo.InvariantCulture)))