Linq表达式区分大小写吗?

25 浏览
0 Comments

Linq表达式区分大小写吗?

从我迄今所读的内容来看,Linq(以及C#)已经对大小写敏感进行了检查。

我如何使其不区分大小写?

以下是我的代码,它返回了0行,但是数据库中确实有一条记录:

bool result = Employee.SearchBy(x => x.Name.Contains("johN schulZ"));

而这个返回值为true:

bool result = Employee.SearchBy(x => x.Name.ToLower().Contains("johN schulZ".ToLower()));

后一种解决方案可以工作,但我想知道是否有更方便的方法。

0
0 Comments

Linq表达式区分大小写吗?

在编写Linq查询表达式时,有时会遇到大小写敏感的问题。在某些情况下,我们可能希望忽略字符串的大小写,以便能够正确地进行匹配和过滤。然而,Linq默认情况下是区分大小写的,这意味着如果我们不进行特殊处理,查询可能会无法成功。

出现问题的原因是在Linq表达式中使用了字符串比较的方法(Equals和Contains),并且指定了StringComparison.CurrentCultureIgnoreCase参数来忽略大小写。这种写法在处理本地集合时是有效的,但是在处理Linq to SQL查询时会出现问题。

在Linq to SQL中,查询表达式需要被转换为相应的SQL查询语句,然而,SQL语句中并没有直接支持使用StringComparison.CurrentCultureIgnoreCase参数进行字符串比较的方法。因此,当我们尝试执行这样的查询时,会出现"Method 'Boolean Equals(System.String, System.String, System.StringComparison)' has no supported translation to SQL."的错误提示。

为了解决这个问题,我们可以采取以下方法:

1. 使用ToLower()或ToUpper()方法将字符串转换为统一的大小写,然后进行比较。这样可以忽略大小写的差异。

bool result = Employee.SearchBy(x => x.Name.ToLower().Equals("johN schulZ".ToLower()));

2. 使用String.Compare()方法进行字符串比较,并指定StringComparison.OrdinalIgnoreCase参数来忽略大小写。

bool result = Employee.SearchBy(x => String.Compare(x.Name, "johN schulZ", StringComparison.OrdinalIgnoreCase) == 0);

通过采用上述方法,我们可以在Linq表达式中忽略字符串的大小写,从而正确地进行匹配和过滤操作。

0
0 Comments

Linq表达式区分大小写吗?

当在数据库中使用时(我假设是Linq2EF或Linq2Sql),区分大小写是由数据库决定的。你应该将列/数据库的排序规则改为不区分大小写。

参考链接:

http://technet.microsoft.com/en-us/library/ms190920.aspx

或者

http://technet.microsoft.com/en-us/library/ms175835.aspx

我的数据库是不区分大小写的。

那么你并没有使用Linq2Sql。

您的回答表明我的先前评论是正确的。请准确陈述事实,以避免浪费时间。

0