LINQ To Entities包含区分大小写的搜索

我试图在linq中查询我的结果集到实体;

var categoriesList = _catRepo.GetAllCategories(); filteredCategories = categoriesList.Where(c=> c.CategoryName.Contains("for")); 

但是,我没有得到任何结果,因为数据库中的CategoryNameFor(Upper Case) 。 我还检查了sql server collat​​ion,并将其设置为_CI_AS 。 我不知道如何使用contains来过滤不区分大小写的字符串? 如果有人打字,我基本上想要;

  filteredCategories = categoriesList.Where(c=> c.CategoryName.Contains("for")); 

要么

 filteredCategories = categoriesList.Where(c=> c.CategoryName.Contains("For")); 

结果应该是一样的

试试这个

 filteredCategories = categoriesList.Where(c=> c.CategoryName.IndexOf("for", StringComparison.OrdinalIgnoreCase) >= 0) 

包含方法的工作原理如下所示

 public bool Contains(string value) { return this.IndexOf(value, StringComparison.Ordinal) >= 0; } 

之前的IndexOf答案应该有效。 因为您正在从数据库加载所有实体,然后对其进行内存(linq到对象)过滤,所以您根本不对数据库执行任何操作。

这也应该有效(从我引用的post)

 filteredCategories = categoriesList.Where(c=> c.CategoryName.ToLower().Contains("for")); 

顺便说一句,如果你有很多类别,那么你可能想要在数据库上过滤它们,而不是从数据库中获取所有类别,然后在内存中过滤它们。