例如,给定以下代码,如何使字符串比较不区分大小写?
var query = from employeeGroup in _session.Linq<EmployeeGroup>()
from employee in employeeGroup.Employee
where employee.UserName == username
select employeeGroup.EmployeeGroupName;NHibernate.Linq.SqlClient.SqlClientExtensions.Upper()方法可能会有所帮助,但这似乎只在SQL Server中可用。
如果我使用System.String类进行比较,我会得到一个错误:“如果没有投影,就无法在条件上使用子查询。”我相信这是因为NHibernate不能直接映射到SQL。
发布于 2010-02-20 00:11:34
据我所知,NHibernate Linq does not support匹配不区分大小写。这对SQL Server来说不是问题,它不区分大小写,但显然是Oracle的问题。为此,我认为您必须使用Criteria API或HQL。
发布于 2015-05-01 22:27:26
在使用nHibernate QueryOver时,您可以将IsInsensitiveLike与MatchMode.Exact一起使用。这使得它是不区分大小写的匹配,"Exact“表示它将与"John”与"Johnson“完全匹配,等等。
var foo = session.QueryOver<Customer>()
.Where(x => x.Firstname.IsInsensitiveLike("John", MatchMode.Exact)).List();发布于 2010-03-10 17:31:28
仅供参考,这里有一个Criteria API示例:
session.CreateCriteria(typeof(Customer))
.Add(new Expression.EqExpression("Firstname", "John", true))
.List<Customer>();EqExpression方法末尾的布尔参数确定不区分大小写。
https://stackoverflow.com/questions/2296405
复制相似问题