Проблема DateFormat с использованием запроса linq (между)

117
7

Я использую между запросом в 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. В сравнении первая часть получает дату, а вторая - нет.

спросил(а) 2021-01-19T13:24:55+03:00 6 месяцев, 2 недели назад
1
Решение
117

Если вы знаете формат даты, вы должны использовать 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)))

ответил(а) 2021-01-19T13:24:55+03:00 6 месяцев, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема