返回小写的值

时间:2018-05-09 18:45:21

标签: c# asp.net-mvc entity-framework linq

我们最近在我们的系统中发现了一个错误,即任何以小写字母输入的序列号都没有得到正确处理。

为了纠正这个问题,我们需要添加一个将通过数据库运行的一次性函数,并使用小写序列号重新处理所有项目。

在linq中,是否有可以运行的查询将返回此类项目的列表?

注意:我不是问如何将小写转换为大写或反转,这是google将返回的全部内容。我需要生成一个列表,其中列出了以小写字母输入序列号的所有数据库条目。

编辑:我正在使用Linq到MS SQL,它似乎不区分大小写。

1 个答案:

答案 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