我尝试在使用Dapper Extensions时对MySQL表进行不区分大小写的匹配,但是当我尝试在linq表达式中使用UpperCase时,我在字段名称上获得了一个null异常: / p>
以下是代码:
var predicateGroup = new PredicateGroup { Operator = GroupOperator.Or, Predicates = new List<IPredicate>() };
var term = "term";
if (term.IsNotNullOrEmpty())
{
predicateGroup.Predicates.Add(Predicates.Field<Company>(p => p.company_code, Operator.Like, string.Format("%{0}%", term)));
predicateGroup.Predicates.Add(Predicates.Field<Company>(p => p.company_name.ToUpper(), Operator.Like, string.Format("%{0}%", term)));
}
return Count<Company>(predicateGroup, TdsAuthConnectionString);
有人知道如何使用DapperExtensions谓词进行不区分大小写的匹配吗?
感谢您的帮助, codenewbie
答案 0 :(得分:0)
p => p.company_name
代码段是一个Linq Lambda Expression<Func<T, object>>
表达式,告诉DapperExtensions在其内部映射中使用什么属性名称。当你在那里使用大写时,它没有指向有效的属性名称,而是指向大写函数。
如果您正在寻找数据不区分大小写,那么这是数据库引擎的一项功能。如果您使用的是Microsoft SQL Server,则数据区分大小写由数据库的排序规则控制。如果您使用的是不区分大小写的代码页,例如Latin1_General_CI_AS
,那么您发送到数据库的所有查询都不区分大小写。您可以通过运行以下SQL语句来检查服务器排序规则:
SELECT SERVERPROPERTY ('Collation')
您可以找到归类列表及其案例敏感度here