예제 #1
0
        private IQueryable <TEF> AddSearchParameters(IQueryable <TEF> q, DTO.StdInputs sci)
        {
            if (sci.SearchParameters != null && sci.SearchParameters.Count > 0)
            {
                int count = sci.SearchParameters.Count;

                dynamic expAll   = null;
                bool    orJoiner = false;

                for (int i = 0; i < count; i++)
                {
                    var sp = sci.SearchParameters.ElementAt(i);

                    var exp = OrmHelper.GetBinaryExpression <TEF>(sp.Column, (int)sp.Compare, sp.Value);

                    if (i == 0)
                    {
                        expAll = exp;
                    }
                    else
                    {
                        expAll = orJoiner ? OrmHelper.ExpressionOr(expAll, exp) :
                                 OrmHelper.ExpressionAnd(expAll, exp);
                    }

                    orJoiner = sp.Or;
                }

                return(OrmHelper.WhereWrapper <TEF>(q, expAll));
            }

            return(q);
        }