LINQ区分大小写

Sha*_*eKm 7 sql linq linq-to-entities

如何根据情况使LINQ区分大小写并且不区分大小写?

我正在使用sql server 2008和Entity Framework 4.0.

我更改了COLLATION以使SQL Server区分大小写.所以对于这样的场景:

 query = query.Where(x => x.Username == username);
Run Code Online (Sandbox Code Playgroud)

它很棒.但是,当按主题(或名称或类似)搜索时,我需要能够从db 忽略大小写中提取数据,如下所示:

query = query.Where(x => (x.Name.Contains(Name)));
Run Code Online (Sandbox Code Playgroud)

当记录是"TestString"并且我正在寻找"测试"或"测试"或类似时,它不起作用.我如何才能使它在文本中找到文本或字符串的一部分?谢谢

a C*_*CVn 12

LINQ没有区分大小写的概念,它只关心布尔值.因此,如果您想忽略大小写,您应该执行以下操作:

query = query.Where(x => (x.Name.ToLower().Contains(Name.ToLower())));
Run Code Online (Sandbox Code Playgroud)

您可能希望将to传递CultureInfo给ToLower()(或使用ToLowerInvariant()),并且您可能希望缓存结果,Name.ToLower()以便不必执行该操作可能很多次,但这应该让您开始.


Iva*_*kas 7

query = query.Where(x => string.Equals(x.Name, Name, StringComparison.CurrentCultureIgnoreCase));
Run Code Online (Sandbox Code Playgroud)