如何使用Linq进行Case-In-Sensitive

时间:2013-10-27 14:01:41

标签: linq

修改

也想知道: 如果;如果我有一个不是大写的数据?或混合大小写?你将如何处理这个?

我正在尝试查询我的结果集

IQueryable<CategoryObject>  filteredCategories = _catRepo.GetAllEmployees();


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

但是,我没有得到任何结果,因为数据库中的CategoryName是For(大写)。我不知道如何使用contains来过滤不区分大小写的字符串?如果有人打字,我基本上想要;

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

OR

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

OR

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

结果应该是相同的

3 个答案:

答案 0 :(得分:4)

尝试

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

这将删除任何案件问题。

答案 1 :(得分:2)

您也可以尝试:

filteredCategories = categoriesList.Where(c=> c.CategoryName.IndexOf("blocks", StringComparison.OrdinalIgnoreCase) != -1);

答案 2 :(得分:1)

第一种方式,如前所述 - 使用ToUpper():

var filterString = "bLoCkS"
filteredCategories = categoriesList.Where(c=> c.CategoryName.ToUpper().Contains(filterString.ToUpper()));

另一种方法 - 在数据库(表格,字段)中使用 Case Insensetive 归类(Changing SQL Server collation to case insensitive from case sensitive?)。