我不知道如何创建具有多个条件的 IsLike 查询。
criteria = criteria.Add(Restrictions.Like("IpAdress", "%" + request.Keyword + "%") ||
Restrictions.Like("MacAdress", "%" + request.Keyword + "%") ||
Restrictions.Like("al.SerialNumber", "%" + request.Keyword + "%"));
如何将上面的查询转换为 IQueryOver 格式?
谢谢!
最佳答案
您尚未发布您的实体的外观,但您可以按照以下方式编写一些内容:
query.Where(Restrictions.Disjunction()
.Add(Restrictions.On<Type>(x => x.IpAddress).IsLike(request.Keyword))
.Add(Restrictions.On<Type>(x => x.MacAdress).IsLike(request.Keyword))
.Add(Restrictions.On<Type2>(x => x.SerialNumber).IsLike(request.Keyword)));
或者您可以使用 ||
运算符代替析取:
query.Where(
Restrictions.On<Type>(x => x.IpAddress).IsLike(request.Keyword) ||
Restrictions.On<Type>(x => x.MacAdress).IsLike(request.Keyword) ||
Restrictions.On<Type2>(x => x.SerialNumber).IsLike(request.Keyword));
这里有一些类似的 SO 问题以获取更多信息:
queryover and (x like 'a' or y like 'a')
QueryOver Or with Subquery
关于Nhibernate - QueryOver。 IsLike 具有多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11948563/