3

我不知道如何创建具有多个条件的 IsLike 查询。

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

如何将上面的查询转换为 IQueryOver 格式?

谢谢!

4

1 回答 1

8

您尚未发布实体的外观,但您可以按照以下方式编写一些内容:

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

于 2012-08-14T09:23:54.617 回答