LINQ到实体包含区分大小写的搜索
本文关键字:大小写 搜索 包含区 实体 LINQ | 更新日期: 2023-09-27 18:03:25
我想查询我的结果集,像这样在linq实体;
var categoriesList = _catRepo.GetAllCategories();
filteredCategories = categoriesList.Where(c=> c.CategoryName.Contains("for"));
然而,我没有得到任何结果,因为CategoryName
是For(Upper Case)
在数据库中。我还检查了sql server排序,它被设置为_CI_AS。我不知道如何使用包含过滤大小写不敏感的字符串?我想如果有人输入;
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
答案应该有效。因为您正在从数据库中加载所有实体,然后对其执行内存中(与对象的关联)筛选,所以您根本没有对数据库执行任何操作。
这也应该工作(从我引用的帖子)
filteredCategories = categoriesList.Where(c=> c.CategoryName.ToLower().Contains("for"));
顺便说一句,如果你有很多类别,那么你可能想要在数据库中过滤它们,而不是从数据库中取出所有类别,然后在内存中过滤它们。