2012-08-14 45 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