2012-08-14 76 views
2

我无法弄清楚如何创建具有多个条件的IsLike查询。Nhibernate - QueryOver。 IsLike具有多个条件

criteria = criteria.Add(Restrictions.Like("IpAdress", "%" + request.Keyword + "%") || 
      Restrictions.Like("MacAdress", "%" + request.Keyword + "%") || 
      Restrictions.Like("al.SerialNumber", "%" + request.Keyword + "%")); 

如何将上面的查询翻译成IQueryOver格式?

谢谢!

回答

6

您还没有发布你的实体是什么样子,但你可以写几行内容:

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

+0

谢谢,它的作品! – 2012-08-14 13:41:04