1

在Orchard模块的开发中,如何检索按字段不区分大小写过滤的ContentParts?我努力了

var name = viewModel.Name.ToUpper();
var samples = _contentManager.Query<SamplePart, SamplePartRecord>()
                .Where(x => x.Name.ToUpper() == name)
                .List();

我得到一个错误

Index was out of range. Must be non-negative and less than the size of the collection.

Parameter name: index

但是当我试图检索而不用担心它是否区分大小写时

var name = viewModel.Name;
var samples = _contentManager.Query<SamplePart, SamplePartRecord>()
                .Where(x => x.Name == name)
                .List();

没有报告错误。

是什么赋予了?

4

1 回答 1

1

请注意,WhereNHibernate 正在将子句中的表达式转换为 SQL 查询。因此,您非常受限于您可以在那里做的事情。在这种情况下,似乎ToUpper不支持该方法。

另一件事 - SQL Server 中的字符串比较行为取决于数据库上设置的实际排序规则。默认情况下它不区分大小写,因此任何字符串比较都会忽略大小写。因此,如果您坚持使用默认值,那么您只需==在两个字符串上使用一个普通的就可以了,就像在上一个示例中一样。

于 2015-05-28T21:54:04.077 回答