Пример #1
0
        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());
            }
        }
Пример #2
0
 public virtual IEnumerable <T> ApplySorting(IEnumerable <T> source, OrderByExpression orderBy)
 {
     return(orderBy != null?orderBy.Apply(source) : source);
 }
Пример #3
0
 public virtual void OrderByPrimaryKey()
 {
     OrderBy = new OrderByExpression(PrimaryKey.Name, TypeProperties <T> .Instance.GetPublicGetter(PrimaryKey));
 }