void OrderByFieldsImpl(string[] fieldNames, Func <string, bool> orderFn) { var getters = new List <GetMemberDelegate>(); var orderAscs = new List <bool>(); var fields = new List <string>(); foreach (var fieldName in fieldNames) { if (string.IsNullOrEmpty(fieldName)) { continue; } var getter = TypeProperties <T> .Instance.GetPublicGetter(fieldName.TrimStart('-')); if (getter == null) { continue; } var orderAsc = orderFn(fieldName); fields.Add(fieldName); getters.Add(getter); orderAscs.Add(orderAsc); } if (getters.Count > 0) { OrderBy = new OrderByExpression(fields.ToArray(), getters.ToArray(), orderAscs.ToArray()); } }
public virtual IEnumerable <T> ApplySorting(IEnumerable <T> source, OrderByExpression orderBy) { return(orderBy != null?orderBy.Apply(source) : source); }
public virtual void OrderByPrimaryKey() { OrderBy = new OrderByExpression(PrimaryKey.Name, TypeProperties <T> .Instance.GetPublicGetter(PrimaryKey)); }