字符串“nfnfn"匹配“nFnFN"并返回真-我希望它返回假
本文关键字:返回 quot 我希望 nFnFN nfnfn 匹配 字符串 | 更新日期: 2023-09-27 18:14:34
我有代码检查数据库上的2个字符串。问题是它将忽略大小写,所以abc123将与abc123相同,我不喜欢这样。我希望用户准确地输入字符串。
我的代码:
public bool Consultant(string test, string test2)
{
return db.Consultants.Any(x => x.Test == test && x.Test2 == test2);
}
不使用查询,该方法正在为我生成一个。
我假设这个查询被翻译成SQL,并且数据库使用不区分大小写的排序。
有几种方法可以解决这个问题。
- 更改数据库定义以使用区分大小写的排序规则。
-
传递排序规则作为查询的一部分
你的ORM可能不支持这个,如果索引使用不同的排序规则,它可能会阻止使用索引。
Bradley Uffner链接了EF:使用实体框架和自定义注释区分大小写搜索的方法
-
在数据库中预过滤(不区分大小写),有效减少结果的数量。然后作为第二步过滤器,严格使用LINQ-to-objects。
public bool Consultant(string test, string test2) { var candidates = db.Consultants.Where(x => x.Test == test && x.Test2 == test2); return candidates.AsEnumerable().Any(x => x.Test == test && x.Test2 == test2); }
如果使用这种方法,不要忘记添加注释,因为这很难直观。
这种方法通常不如其他方法,所以如果有可用的方法,您应该选择它们。
您需要进行大小写敏感的搜索,如下所示:
public bool Consultant(string test, string test2)
{
return db.Consultants.Any(x => String.Compare(x.Test, test, false) == 0 && String.Compare(x.Test2, test2, false) == 0);
}