queryover and (x like 'a' or y like 'a')

前端 未结 3 787
离开以前
离开以前 2020-12-04 16:16

Hi Is there any elegant way of combining \'like\' and \'or\' when i\'m using queryover API? for \'like\' there is something like:

 query.WhereRestrictionOn(         


        
相关标签:
3条回答
  • 2020-12-04 16:56
    query.Where(Restrictions.On<Type>(x => x.Code).IsLike(codePart) ||
                Restrictions.On<Type>(x => x.Description).IsLike(codePart))
    
    0 讨论(0)
  • 2020-12-04 17:11

    Another version of this, which depending on taste, you may like, is as follows:

    query.Where(Restrictions.Disjunction()
             .Add(Restrictions.On<Type>(e => e.Code).IsLike(codePart))
             .Add(Restrictions.On<Type>(e => e.Description).IsLike(codePart)));
    
    0 讨论(0)
  • 2020-12-04 17:19

    You could use the NHibernate Disjunction class to do this in a more elegant (IMHO) fashion:

    var disjunction= new Disjunction();
    
    disjunction.Add(Restrictions.On<Type>(e => e.Code).IsLike(codePart));
    disjunction.Add(Restrictions.On<Type>(e => e.Description).IsLike(codePart));
    //(and so on)
    

    and then:

    query.Where(disjunction)
    

    Each "OR" is a separate instruction, which helps if you want to add the predicates conditionally.

    0 讨论(0)
提交回复
热议问题