Nhibernate или в SQL заявление - PullRequest
0 голосов
/ 01 июля 2010

как получить эквивалент "или" в nhibernate

У меня есть следующий метод.В основном, я хочу посмотреть, найдено ли ключевое слово в product.Name или Product.Description.

   public ICollection<ProductCategory> FindByCompanyIdAndSearchAndPop(int companyId, string keyword)
    {
        var products = _session
            .CreateCriteria(typeof(ProductCategory))
            .CreateAlias("Product", "product", JoinType.InnerJoin)
            .Add(Restrictions.Eq("CompanyId", companyId))
            .Add(Restrictions.Eq("product.IsPopItem", true))
            .Add(Restrictions.Like("product.Name", keyword, MatchMode.Anywhere))
            .Add(Restrictions.Like("product.Description", keyword, MatchMode.Anywhere))
            .List<ProductCategory>();
        return products;
    }

Ответы [ 2 ]

5 голосов
/ 01 июля 2010

Оператор || перегружен для ограничения, поэтому вы можете написать:

.Add(
    Restrictions.Like("product.Name", keyword, MatchMode.Anywhere) ||
    Restrictions.Like("product.Description", keyword, MatchMode.Anywhere)))
1 голос
/ 01 июля 2010

Полагаю, вы можете использовать Expression.Or (ограничение1, ограничение2) следующим образом:

.Add(Expression.Or(Restrictions.Like("product.Name", keyword, 
   MatchMode.Anywhere),Restrictions.Like("product.Description", keyword, 
   MatchMode.Anywhere)))

Если я правильно помню, вы также можете вкладывать Expression.Or

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...