Ejemplo n.º 1
0
        private static void ApplySort <TEntity>(ref IQueryable <TEntity> source, CriteriaField criteriaField) where TEntity : class
        {
            IOrderedQueryable <TEntity> orderedQueryTmp;
            IOrderedQueryable <TEntity> orderedQuery = null;

            if (criteriaField != null && criteriaField.FieldSortList != null && criteriaField.FieldSortList.Count > 0)
            {
                foreach (FieldSort fieldSort in criteriaField.FieldSortList)
                {
                    orderedQueryTmp = null;
                    if (fieldSort.Sort == TFieldSort.Asc)
                    {
                        orderedQueryTmp = ApplyOrder(orderedQuery == null ? source : orderedQuery, fieldSort.Name, orderedQuery == null ? "OrderBy" : "ThenBy");
                    }
                    else if (fieldSort.Sort == TFieldSort.Desc)
                    {
                        orderedQueryTmp = ApplyOrder(orderedQuery == null ? source : orderedQuery, fieldSort.Name, orderedQuery == null ? "OrderByDescending" : "ThenByDescending");
                    }

                    if (orderedQueryTmp != null)
                    {
                        orderedQuery = orderedQueryTmp;
                    }
                }
            }
            if (orderedQuery != null)
            {
                source = orderedQuery;
            }
        }
Ejemplo n.º 2
0
        public static void CompleteQuery <TEntity>(ref TableQuery <TEntity> source, CriteriaField criteriaField) where TEntity : class
        {
            if (source == null || criteriaField == null)
            {
                return;
            }

            Expression <Func <TEntity, bool> > queryExpression = null;

            CompleteQueryInternal(ref queryExpression, criteriaField);
            if (queryExpression != null)
            {
                source = source.Where(queryExpression);
            }
        }
Ejemplo n.º 3
0
        public static void CompleteQuery <TEntity>(ref IQueryable <TEntity> source, CriteriaField criteriaField) where TEntity : class
        {
            if (source == null || criteriaField == null)
            {
                return;
            }

            Expression <Func <TEntity, bool> > queryExpression = null;

            CompleteQueryInternal(ref queryExpression, criteriaField);
            if (queryExpression != null)
            {
                Expression <Func <TEntity, bool> > queryExpression2 = null;
                CompleteQueryInternal(ref queryExpression2, criteriaField);
                queryExpression = queryExpression.Or(queryExpression2);
            }
            if (queryExpression != null)
            {
                source = source.Where(queryExpression);
            }

            ApplySort(ref source, criteriaField);
        }
Ejemplo n.º 4
0
        private static void CompleteQueryInternal <TEntity>(ref Expression <Func <TEntity, bool> > queryExpression, CriteriaField criteriaField) where TEntity : class
        {
            var criteriaFieldProperties = criteriaField.GetType().GetRuntimeProperties();

            object value;
            string fieldName;
            var    type       = typeof(TEntity);
            var    properties = type.GetRuntimeProperties();

            if (properties != null && criteriaFieldProperties != null)
            {
                foreach (var criteriaFieldProperty in criteriaFieldProperties)
                {
                    fieldName = criteriaFieldProperty.Name;
                    value     = criteriaFieldProperty.GetValue(criteriaField, null);
                    if (value == null)
                    {
                        continue;
                    }

                    CompleteQueryWithCriteria(ref queryExpression, fieldName, value);
                }
            }
        }