为什么String.Contains在此查询中不区分大小写?

时间:2013-02-02 20:38:12

标签: c# .net asp.net-mvc linq asp.net-mvc-4

我正在通过this ASP MVC tutorial。本教程的这一页面涉及编写一个简单的“搜索”页面。控制器包含此方法:

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的电影。如果我在调试器中检查控制器方法,searchStringmel(小写),如预期的那样。

为什么String.Contains不区分大小写匹配此标题?

1 个答案:

答案 0 :(得分:15)

使用Linq to entities时,查询由SQL Server完成。您的Lambda表达式被转换为SQL查询,因此它是否区分大小写取决于服务器配置。

如果您想更改SQL Server排序规则并使其区分大小写,请参阅此页面: http://blog.sqlauthority.com/2007/04/30/case-sensitive-sql-query-search/