LINQ区分大小写 [英] LINQ case sensitive

查看:410
本文介绍了LINQ区分大小写的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

How to make LINQ case sensitive and NOT case sensitive depending on the situation?

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

I'm using sql server 2008 and Entity Framework 4.0.

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

I changed the COLLATION to make SQL Server case sensitive. so that for scenarios like these:

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

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

it works great. However I need to be able to pull out data from db ignoring case when searching by subject (or name or similar) like so:

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

当记录是"TestString"并且我正在寻找"test"或"Test"或类似的东西时,它不起作用.我将如何做到这一点,以便在文本中找到文本或字符串的一部分? 谢谢

which doesn't work when record is "TestString" and i'm looking for "test" or "Test" or similar. How would i make it so that when it would find a text or part of a string in a text? thanks

推荐答案

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

LINQ has no concept of case sensitivity, it only cares about boolean evaluation. So if you want to ignore case, you should do something like:

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

您可能需要将CultureInfo传递给ToLower()(或使用ToLowerInvariant()),并且可能想要缓存Name.ToLower()的结果,从而不必执行可能很大的操作次数,但这应该可以帮助您入门.

Chances are you will want to pass a CultureInfo to ToLower() (or use ToLowerInvariant()), and you might want to cache the result of Name.ToLower() so as to not have to perform that operation a potentially large number of times, but this should get you started.

这篇关于LINQ区分大小写的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆