Запрос с несколькими условиями - PullRequest
0 голосов
/ 06 ноября 2019

Я новичок в nhibernate и мне нужно сделать предварительный запрос, потому что мой код возвращает неправильные результаты. В основном мне нужно проверить, является ли первое свойство пустым или пустым, а второе - вторым свойством, а также пустым или пустым, а затем вернуть их результат.

Я пробовал это, но результаты неверны (возвращает false && true true)

         var _all2 = queryOver.SelectList(list => list
                .Select(                
                    Projections.Conditional(                                                                           
                            _first
                            &&
                            _second,
                        Projections.Constant(true), Projections.Constant(false)))).List<bool>();

Этот код работает, но мне нужно перенести его в один запрос

        PropertyProjection prop = Projections.Property("LoginName");
        PropertyProjection prop2 = Projections.Property("Passwordhash");

        AbstractCriterion _first = Restrictions.And(Restrictions.IsNotNull(prop), Restrictions.Not(Restrictions.Eq(Projections.SqlFunction("trim", NHibernateUtil.String, prop), "")));
        AbstractCriterion _second = Restrictions.And(Restrictions.IsNotNull(prop2), Restrictions.Not(Restrictions.Eq(Projections.SqlFunction("trim", NHibernateUtil.String, prop2), "")));


            IList<bool> _a1 = queryOver.SelectList(list => list
                   .Select(Projections.Conditional(_first, Projections.Constant(true), Projections.Constant(false)))).List<bool>();

            IList<bool> _a2 = queryOver.SelectList(list => list
                    .Select(Projections.Conditional(_second, Projections.Constant(true), Projections.Constant(false)))).List<bool>();


            bool[] ar1 = _a1.ToArray<bool>();
            bool[] ar2 = _a2.ToArray<bool>();
            bool[] res = new bool[ar1.Length];
            for (int i = 0; i < ar1.Length; i++)
            {
                res[i] = ar1[i] && ar2[i];
            }

Мне нужно перенести мой код в один запрос запроса

...