Проблема DateFormat с использованием запроса linq (между)
Я использую между запросом в 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 выдает это исключение. При обмене текстовыми полями между собой, как и размещенным _txtTo.text, в месте _txtFrom.text и наоборот, он выдавал исключение в _txtFrom.text. В сравнении первая часть получает дату, а вторая - нет.
Если вы знаете формат даты, вы должны использовать 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)))