public static IOrderedQueryable <T> OrderIf <T, Tkey>(this IQueryable <T> source, Expression <Func <T, Tkey> > order, OrderByStatus status, bool isEnable) { IOrderedQueryable <T> result = null; if (source == null || order == null) { return(null); } if (isEnable) { if (source.ContainOrderBy()) { result = status == OrderByStatus.Asc ? ((IOrderedQueryable <T>)source).ThenBy(order) : ((IOrderedQueryable <T>)source).ThenByDescending(order); } else { result = status == OrderByStatus.Asc ? source.OrderBy(order) : source.OrderByDescending(order); } } else { result = (source as IOrderedQueryable <T>); } return(result); }
public static IOrderedQueryable <T> OrderIf <T, TKey>(this IQueryable <T> source, Expression <Func <T, TKey> > order, OrderByStatus status, bool isEnable) { IOrderedQueryable <T> orderedQueryable = (IOrderedQueryable <T>)null; if (source != null && order != null) { orderedQueryable = !isEnable ? source as IOrderedQueryable <T> : (!source.ContainsOrderBy <T>() ? (status != OrderByStatus.ASC ? source.OrderByDescending <T, TKey>(order) : source.OrderBy <T, TKey>(order)) : (status != OrderByStatus.ASC ? (source as IOrderedQueryable <T>).ThenByDescending <T, TKey>(order) : (source as IOrderedQueryable <T>).ThenBy <T, TKey>(order))); } return(orderedQueryable); }