![]() |
1
106
正如你所说,toupper和tolower之间有一些重要的区别,当你试图进行不区分大小写的平等检查时,只有一个是可靠准确的。 理想情况下,进行不区分大小写的相等检查的最佳方法 将是 :
然而,注意
这样做
不工作
在这种情况下!因此我们被困在
注意 依次的 忽略以确保安全。但是,您使用的区分大小写检查的具体类型取决于您的目的。但是,通常在排序时使用equals进行相等性检查和比较,然后为作业选择正确的StringComparison。 迈克尔·卡普兰(一位公认的文化和性格处理权威,如此)在《图珀与托洛威尔》杂志上发表了相关的文章: 他说“string.toupper_” 使用toupper而不是tolower,并指定不变量区域性以获取OS大小写规则 “ |
![]() |
2
68
我用过
这将执行不区分大小写的比较。 |
![]() |
3
7
我用lambda表达式尝试了这个方法,它起作用了。
|
![]() |
4
0
如果将不区分大小写的字符串传递到linq to sql,它将以不变的方式传递到sql,并在数据库中进行比较。如果要在数据库中进行不区分大小写的字符串比较,只需创建一个进行比较的lambda表达式,Linq to SQL提供程序会将该表达式转换为字符串完整的SQL查询。 例如,此Linq查询:
由Linq to SQL提供程序转换为以下SQL:
如您所见,字符串参数将在SQL中进行比较,这意味着事情应该按照预期的方式进行。 |
![]() |
5
0
要执行区分大小写的LINQ to SQL查询,请使用以下方法之一,通过指定服务器数据类型,将__string_
或
注:上述排序规则类型中的“cs”表示“区分大小写”。 当使用Visual Studio DBML设计器查看属性时,可以在__server data type_157;字段中输入此值。 有关详细信息,请参阅 http://yourdotnetdesignteam.blogspot.com/2010/06/case-sensitive-linq-to-sql-queries.html |
![]() |
6
0
|
![]() |
7
0
以下两阶段方法适用于我(VS2010、ASP.NET MVC3、SQL Server 2008、Linq to SQL):
|
![]() |
8
0
有时存储在数据库中的值可能包含空格,因此运行该值可能会失败。
解决这个问题的方法是删除空格,然后转换它的大小写,然后像这样选择
注意在这种情况下 客户名称 是与数据库值匹配的值 用户数据库 是阶级 标题 是数据库列 |
![]() |
9
-1
请记住,查询是否工作与它是否工作之间存在差异 有效地 !当语句的目标是SQL Server时,LINQ语句将转换为T-SQL,因此需要考虑将生成的T-SQL。 使用string.equals将很可能(我猜)从SQL Server返回所有行,然后在.NET中进行比较,因为它是一个.NET表达式,无法转换为T-SQL。 换句话说,使用表达式将增加您的数据访问,并删除您使用索引的能力。它适用于小桌子,你不会注意到不同之处。在一张大桌子上,它的性能可能很差。 这是Linq存在的问题之一;人们不再考虑他们所写的语句将如何实现。 在这种情况下,没有一种方法可以不使用表达式就完成您想要的工作,即使在T-SQL中也不行。因此,您可能无法更有效地执行此操作。即使上面给出的T-SQL答案(使用带有排序规则的变量)也很可能导致索引被忽略,但是如果它是一个大表,那么运行该语句并查看执行计划以查看是否使用了索引是值得的。 |
![]() |
Rm558 · 是否可以更改XML类型上的LINQPad代码生成? 7 年前 |
![]() |
MJK · 规范模式-使用ICollection实现表达式 7 年前 |
![]() |
Roland Ebner · 为实体框架多对多关系构建表达式树? 7 年前 |