Exemplo n.º 1
0
        /// <summary>
        /// 只适用于EF框架
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="expression"></param>
        /// <param name="desc"></param>
        /// <returns></returns>
        private Pagination OrderBy <T>(Expression <Func <T, object> >[] expression, bool desc)
        {
            foreach (var item in expression)
            {
                MemberExpression mexp = null;
                if (item.Body.NodeType == ExpressionType.Convert)
                {
                    var temp = (UnaryExpression)item.Body;
                    if (temp.Operand.NodeType == ExpressionType.MemberAccess)
                    {
                        mexp = (MemberExpression)temp.Operand;
                    }
                }
                else
                {
                    mexp = item.Body as MemberExpression;
                }

                if (mexp != null && mexp.Member != null)
                {
                    var s = string.Format("{0} {1}", mexp.Member.Name, desc ? "desc" : "asc");
                    SortExpress.Add(s);
                }
                else
                {
                    throw new ArgumentException("没有找到合适的属性");
                }
            }
            return(this);
        }
Exemplo n.º 2
0
 /// <summary>
 /// 排序,只适用于EF框架
 /// </summary>
 /// <param name="expression"></param>
 /// <param name="desc"></param>
 /// <returns></returns>
 public Pagination OrderBy(string expression, bool desc)
 {
     //SortExpress = new List<string>() { expression + (desc ? " desc" : " asc") };
     if (SortExpress == null)
     {
         SortExpress = new List <string>();
     }
     SortExpress.Add(expression + " desc");
     return(this);
 }
Exemplo n.º 3
0
        /// <summary>
        /// 按照指定字段排序,如果字段已经存在排序表达式中,则逆反排序方向,只适用Linq
        /// </summary>
        /// <param name="expression">排序字段</param>
        /// <returns></returns>
        public Pagination OrderBy(string expression)
        {
            //var item = SortExpress.Select( c=>c.Trim().Split(' ')).Where( c=>c[0] == expression).FirstOrDefault();

            //bool desc = false;
            //if (item != null)
            //{
            //    desc = item[1] != "desc";
            //}
            //SortExpress = new List<string>() { expression + (desc ? " desc" : " asc") };
            if (SortExpress == null)
            {
                SortExpress = new List <string>();
            }
            SortExpress.Add(expression + " asc");
            return(this);
        }