У меня следующая проблема: в таблице базы данных записаны продажи. Одним из полей является SaleDate, которое является типом даты SQL Server. Сайт теперь позволяет искать в этом поле. И это позволяет искать только по году.
Предположим, есть одна запись с датой 2008/11/01. Если я ищу «2008», запись возвращается, что, конечно, правильно. Но поиск "2008/11/01" не вернет запись.
Так вот мой код:
filteredSales = filteredSales.Where(s => s.SaleDate.ToString().Contains(searchterm));
I have also tried this ones:
filteredSales = filteredSales.Where(s => s.SaleDate.Value.ToString().Contains(searchterm));
filteredSales = filteredSales.Where(s => s.SaleDate.Value.ToShortDateString().Contains(searchterm));
Они тоже не работают.
Возможно, это вовсе не проблема LinQ, а скорее культура, так как это немецкое приложение, а поисковый термин действительно "01.11.2008". Но когда я вывожу значение из базы данных или даже смотрю прямо в базу данных, оно отображается на «01.11.2008».
Спасибо за помощь.
Michael
Вот полное решение, основанное на выбранном ответе ниже:
try
{
DateTime sdt = DateTime.Parse(suchbegriff, new System.Globalization.CultureInfo("de-DE"));
filteredSales = filteredSales.Where(s => s.SaleDate.Value == sdt);
}
catch (FormatException e)
{
// in case we have only the year try to make a string match
filteredSales = filteredSales.Where(s => s.SaleDate.Value.Year.ToString().Equals(suchbegriff));
}
Michael