private async Task TestColumnOrderAsync()
 {
     foreach (GridColumnBase column in GridColumnBases)
     {
         SortChangeEvent sort = new SortChangeEvent()
         {
             SortId = column.PropertyInfo.Name, Direction = SortDirection.Asc
         };
         ItemList = await GetPageAsync(sort, null);
     }
 }
 public async Task <List <object> > GetPageAsync(SortChangeEvent sort, GridSearch search)
 {
     if (sort == null)
     {
         return((await GetListAsync(search))
                .Skip((PageIndex - 1) * PageSize).Take(PageSize).ToList());
     }
     else
     {
         PropertyInfo prop = ItemType.GetProperty(sort.SortId);
         if (sort.Direction == SortDirection.Desc)
         {
             return((await GetListAsync(search)).OrderByDescending(x => prop.GetValue(x, null))
                    .Skip((PageIndex - 1) * PageSize).Take(PageSize).ToList());
         }
         else
         {
             return((await GetListAsync(search)).OrderBy(x => prop.GetValue(x, null))
                    .Skip((PageIndex - 1) * PageSize).Take(PageSize).ToList());
         }
     }
 }