Benny Sutton is 4 hire - just click here

Extension Method to extend OrderBy

Ever needed to pass in different fields to order by into Linq? This extension helper for OrderBy has you covered!

             
        public static IQueryable<TEntity> OrderBy<TEntity>(this IQueryable<TEntity> source, string orderByProperty,
                          bool desc)
        {
            string command = desc ? "OrderByDescending" : "OrderBy";
            var type = typeof(TEntity);
            var property = type.GetProperty(orderByProperty);
            var parameter = Expression.Parameter(type, "p");
            var propertyAccess = Expression.MakeMemberAccess(parameter, property);
            var orderByExpression = Expression.Lambda(propertyAccess, parameter);
            var resultExpression = Expression.Call(typeof(Queryable), command, new Type[] { type, property.PropertyType },
                                          source.Expression, Expression.Quote(orderByExpression));
            return source.Provider.CreateQuery<TEntity>(resultExpression);
        }
        
    

call like this...

             
            var model =
                db.Downloads
                .Where(r => SearchTerm == null && r.CompanyID == _companyID && r.Flag == false && r.HiRez == false || r.Name.Contains(SearchTerm) && r.CompanyID == _companyID && r.Flag == false && r.HiRez == false)
                .OrderBy(orderByName, orderByDirection)
                .Select(r => new DownloadListVeiwModel