c# – 实体框架LINQ不包含不区分大小写

栏目: ASP.NET · 发布时间: 6年前

内容简介:翻译自:https://stackoverflow.com/questions/25310750/entity-framework-linq-contains-not-case-insensitive

我有一些’撕掉我的头发’ – 实体框架的问题,我找不到解决方案.

我想要做的是比较我在服务器上运行的搜索功能的字符串.它基本上是:collection.Where(c => c.Name.Contains(searchTerm));其中searchTerm是用户传递的字符串.

我到处都看到了:

>使用toUpper()更改两个字符串,或

>将 排序 规则设置为不区分大小写.

然而,这些都不适用于我的情况.这是一个类似的问题,没有答案: Entity Framework – case insensitive Contains?

使用第一个替代方法将导致获取数据库中的每一行,然后执行toUpper(),以查看它是否匹配.这在性能方面是不可接受的.

第二种方法似乎更有可能是一种有效的解决方案,但由于某种原因不起作用.我有两个数据库.一个本地和一个远程.远程MSSQL数据库设置为排序规则:Finnish_Swedish_CI_AS,这意味着它不区分大小写?本地数据库是一个自动生成的localDB,其属性“Case Sensitive”设置为False.

无论我使用它的这两个数据库中的哪一个,对用户来说仍然总是区分大小写.

有人可以解释为什么会这样,所以我可以继续我悲惨的生活吗?

亲切的问候,

罗宾多尔贝尔

从评论中,听起来OP首先将IQueryable列表转换为ICollection,这意味着任何后续LINQ都在“本地”运行而不是有机会转换为SQL.

例如,

// Should be IQueryable<T>
    ICollection<User> users = context.Users;

    // This is executed in code rather than SQL, and so is case SENSITIVE
    users = users.Where(c => c.Name.Contains(searchTerm));

这可能有助于调试问题: How do I view the SQL generated by the entity framework?

翻译自:https://stackoverflow.com/questions/25310750/entity-framework-linq-contains-not-case-insensitive


以上所述就是小编给大家介绍的《c# – 实体框架LINQ不包含不区分大小写》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

来吧!带你玩转 Excel VBA

来吧!带你玩转 Excel VBA

罗刚君、杨嘉恺 / 电子工业出版社 / 2013-7 / 85.00元

本书旨在普及Excel VBA 基础理论,以及通过VBA 的高级应用扩展Excel 的功能,提升读者的制表效率,解决工作中的疑难,同时亦可借此开发商业插件。 本书主要分为操作自动化引言篇、入门篇、进阶篇和疑难解答篇,覆盖从入门到提高的所有内容,以满足不同层次的读者需求。其中操作自动化引言篇简述了操作自动化的需求与方式,借此引出VBA 入门篇。VBA 入门篇包含第2 章到第13 章,主要介绍了......一起来看看 《来吧!带你玩转 Excel VBA》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具