Sql server 使用IContentManager检索ContentPart,按不区分大小写的字段筛选
在Orchard模块的开发中,如何检索由字段不敏感地过滤的ContentParts案例?我试过了Sql server 使用IContentManager检索ContentPart,按不区分大小写的字段筛选,sql-server,asp.net-mvc,nhibernate,orchardcms,orchard-modules,Sql Server,Asp.net Mvc,Nhibernate,Orchardcms,Orchard Modules,在Orchard模块的开发中,如何检索由字段不敏感地过滤的ContentParts案例?我试过了 var name = viewModel.Name.ToUpper(); var samples = _contentManager.Query<SamplePart, SamplePartRecord>() .Where(x => x.Name.ToUpper() == name) .List(); 但当我尝试检索
var name = viewModel.Name.ToUpper();
var samples = _contentManager.Query<SamplePart, SamplePartRecord>()
.Where(x => x.Name.ToUpper() == name)
.List();
但当我尝试检索时,不必担心它是否区分大小写
var name = viewModel.Name;
var samples = _contentManager.Query<SamplePart, SamplePartRecord>()
.Where(x => x.Name == name)
.List();
var name=viewModel.name;
var samples=\u contentManager.Query()
.Where(x=>x.Name==Name)
.List();
未报告任何错误
给出了什么?请注意,
Where
子句中的表达式在某个时刻被NHibernate转换为SQL查询。因此,你只能在那里做些什么。在这种情况下,似乎不支持ToUpper
方法
另一件事-SQL Server中的字符串比较行为取决于数据库上设置的实际排序规则。默认情况下,它不区分大小写,因此任何字符串比较都将忽略大小写。因此,如果您坚持使用默认值,您只需在两个字符串上使用一个普通的
=
,就像在上一个示例中一样。我的数据库排序规则实际上是SQL\u Latin1\u General\u CP1\u CI\u AS(不区分大小写)。谢谢
var name = viewModel.Name;
var samples = _contentManager.Query<SamplePart, SamplePartRecord>()
.Where(x => x.Name == name)
.List();