sql - LINQ区分大小写

标签 sql linq linq-to-entities

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

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

我更改了COLLATION以使SQL Server区分大小写。因此对于以下情况:

 query = query.Where(x => x.Username == username);

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

当记录是“TestString”并且我正在寻找“test”或“Test”或类似的东西时,这是行不通的。我将如何做到这一点,以便在文本中找到文本或字符串的一部分时?
谢谢

最佳答案

LINQ没有区分大小写的概念,只关心 bool 值评估。因此,如果您想忽略大小写,则应执行以下操作:

query = query.Where(x => (x.Name.ToLower().Contains(Name.ToLower())));

您可能希望将CultureInfo传递到ToLower()(或使用ToLowerInvariant()),并且可能想要缓存Name.ToLower()的结果,从而不必执行该操作可能潜在的次数很多,但这应该可以帮助您开始。

关于sql - LINQ区分大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5104520/

相关文章:

c# - 使用 if 语句的 LINQ WHERE 子句

c# - Microsoft 是否修复了 .NET 4.0 中的 Linq to Entities 性能问题?

c# - Entity Framework 推断关系

php - SQL 总计数除以总计数

mysql - 如果只有一行匹配条件,则获取外键的所有行

mysql - 复制同一张表中的所有数据MYSQL

c# - 如何在 LINQ 中分组然后选择元素到新类中(最好是 C#)

c# - SQL "IN"CLAUSE 性能问题

entity-framework - Entity Framework Linq 将 lambda 表达式嵌入到可重用函数中

sql - 替换 Is Null 或 Exist 内部查询逻辑以减少存储过程执行时间