Linq查询行为不符合预期

伊兹

我有一个非常简单的linq查询,如下所示:

var result = (from r in employeeRepo.GetAll()
              where r.EmployeeName.Contains(searchString) 
                    || r.SAMAccountName.Contains(searchString)
              orderby r.EmployeeName
              select new SelectListItem 
              { 
                  Text = r.EmployeeName, 
                  Value = r.EmployeeName 
              });

该问题是出于某种奇怪的原因,它使我搜索的每个人的记录都变成小写或大写。

  1. 测试用户
  2. 测试用户
  3. 测试用户

我会找回正确的记录。但是,当我使用小写字母搜索自己的名字时,我没有得到任何结果,但是如果我使用名字的首字母作为大写字母,则会得到结果。我似乎无法弄清楚为什么这样做。

数据库中的每个名字和姓氏均以大写字母开头。

我正在使用的searchString是:

  1. richard -我得到正确的结果
  2. waidande - 未找到结果

以上两个用户都在数据库中。

我也Entity Framework用来查询Sql Server 2012

卢卡斯·索佐达(Lukasz Szozda)

如果您的文本具有NVARCHAR数据类型,请检查实际上并不相同的相似字母:

CREATE TABLE #employee (ID INT IDENTITY(1,1), EmployeeName NVARCHAR(100));

INSERT INTO #employee(EmployeeName) VALUES (N'waidаnde');

SELECT *
FROM #employee
WHERE EmployeeName LIKE '%waidande%';

-- checking
SELECT *
FROM #employee
WHERE CAST(EmployeeName AS VARCHAR(100)) <> EmployeeName;

db <> fiddle演示

此处:'а'!= 'a'一种来自Cyrillic 'a',第二种是正常的。


创意取自:

在此处输入图片说明

幻灯片来自:http : //sqlbits.com/Sessions/Event12/Revenge_The_SQL

附言:Revenge: The SQL!我强烈建议观看Rob Volk的讲话:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章