【发布时间】:2009-08-20 05:34:39
【问题描述】:
我有以下问题:在一个数据库表中有销售记录。其中一个字段是 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”。
感谢您的帮助。
迈克尔
以下是基于以下所选答案的完整解决方案:
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));
}
迈克尔
【问题讨论】:
标签: sql-server asp.net-mvc linq-to-sql