我们最近在我们的系统中发现了一个错误,即任何以小写字母输入的序列号都没有得到正确处理。
为了纠正这个问题,我们需要添加一个将通过数据库运行的一次性函数,并使用小写序列号重新处理所有项目。
在linq中,是否有可以运行的查询将返回此类项目的列表?
注意:我不是问如何将小写转换为大写或反转,这是google将返回的全部内容。我需要生成一个列表,其中列出了以小写字母输入序列号的所有数据库条目。
编辑:我正在使用Linq到MS SQL,它似乎不区分大小写。答案 0 :(得分:1)
是的,有。你可以尝试这样的事情:
var result = serialnumber.Any(c => char.IsLower(c));
<强> [编辑] 强>
好吧,如果是Linq to Entities ......
正如此处所述:Regex in Linq (EntityFramework), String processing in database,有几种解决方法。
更改数据库表结构。例如。创建表Foo_Filter,它将您的实体链接到过滤器。然后创建表过滤器 它将包含过滤器数据。
在内存中执行查询并使用Linq to Objects。此选项将很慢,因为您必须从数据库中获取所有数据到内存
注意:我已添加了MSDN文档的链接。
例如:
var result = context.Serials.ToList().Where(sn => sn.Any(c => char.IsLower(c)));
另一种方法是使用SqlMethods.Like Method
最后,我强烈建议您阅读:Case sensitive search using Entity Framework and Custom Annotation