Nhibernate - QueryOver。 IsLike有多种条件

时间:2012-08-14 08:32:29

标签: nhibernate queryover

我无法弄清楚如何使用多个条件创建IsLike查询。

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

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

谢谢!

1 个答案:

答案 0 :(得分: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));

以下是一些类似的问题以获取更多信息:
queryover and (x like 'a' or y like 'a')
QueryOver Or with Subquery