Ejemplo n.º 1
0
        public static IQueryable <TEntity> SortByOptions <TEntity>(this IQueryable <TEntity> query, DxGridParams gridParams)
        {
            if (!gridParams.SortOptions.IsNullOrEmpty())
            {
                JArray        array      = JArray.Parse(gridParams.SortOptions);
                List <string> sortOrders = new List <string>();
                foreach (var item in array.ToList())
                {
                    var sortOptions = JObject.Parse(item.ToString());
                    var columnName  = (string)sortOptions.SelectToken("selector");
                    var descending  = (bool)sortOptions.SelectToken("desc");

                    if (descending)
                    {
                        columnName += " DESC";
                    }
                    sortOrders.Add(columnName);
                }
                string sortOrdersStr = string.Join(",", sortOrders);
                query = System.Linq.Dynamic.DynamicQueryable.OrderBy(query, sortOrdersStr);
            }
            else
            {
                string       columnName     = string.Empty;
                PropertyInfo idPropertyInfo = query.ElementType.GetProperties().FirstOrDefault(x => x.Name.ToLower() == "id");
                if (idPropertyInfo != null)
                {
                    columnName = idPropertyInfo.Name;
                }
                else
                {
                    columnName = query.ElementType.GetProperties()[0].Name;
                }
                query = DynamicQueryable.OrderBy(query, columnName);
            }
            return(query);
        }
Ejemplo n.º 2
0
 public static IQueryable <TEntity> FilterByOptions <TEntity>(this IQueryable <TEntity> query, DxGridParams gridParams)
 {
     if (!gridParams.FilterOptions.IsNullOrEmpty())
     {
         Type          elementType = query.ElementType;
         var           filterTree  = JArray.Parse(gridParams.FilterOptions);
         StringBuilder sb          = new StringBuilder();
         sb = ReadExpression(sb, filterTree, elementType);
         string filter = sb.ToString();
         query = System.Linq.Dynamic.DynamicQueryable.Where(query, filter);
     }
     return(query);
 }
Ejemplo n.º 3
0
 public static IQueryable <TEntity> PageByOptions <TEntity>(this IQueryable <TEntity> query, DxGridParams gridParams)
 {
     if (gridParams.Skip.HasValue)
     {
         query = query
                 .Skip(gridParams.Skip.Value)
                 .Take(gridParams.Take.Value);
     }
     return(query);
 }