我正在学习本ASP MVC教程。本教程的这一页介绍如何编写一个简单的"搜索"页面。控制器包含以下方法:
public ActionResult SearchIndex(string searchString)
{
var movies = from m in db.Movies
select m;
if (!String.IsNullOrEmpty(searchString))
{
movies = movies.Where(s => s.Title.Contains(searchString));
}
return View(movies);
}
根据MSDN的说法,String.Contains
区分大小写。但当我导航到[website url]/Movies/SearchIndex?searchString=mel
时,它会返回一个标题为Melancholia
的电影。如果我在调试器中检查控制器方法,那么searchString
就是预期的mel
(小写)。
为什么String.Contains
不敏感地匹配此标题大小写?
使用Linq to entities
时,查询由SQL Server完成。Lambda表达式被转换为SQL查询,因此它是否区分大小写取决于服务器配置。
如果要更改SQL Server排序规则并使其区分大小写,请参阅此页:http://blog.sqlauthority.com/2007/04/30/case-sensitive-sql-query-search/