public static List <OrderByClip> GetOrderByClips(string order, string orderName) { List <OrderByClip> orderByClips = new List <OrderByClip>(); if (!string.IsNullOrWhiteSpace(order) && !string.IsNullOrWhiteSpace(orderName)) { OrderByOperater operater = OrderByOperater.ASC; if (order.ToLower() == "desc") { operater = OrderByOperater.DESC; } orderByClips.Add(new OrderByClip(orderName, operater)); } return(orderByClips); }
public OrderByClip(Field field, OrderByOperater orderBy) : this(field.TableFieldName, orderBy) { }
public OrderByClip(string fieldName, OrderByOperater orderBy) { orderByClip.Add(fieldName, orderBy); }
private static OrderByClip ToOrderByClipChild(System.Linq.Expressions.Expression exprBody, OrderByOperater orderBy) { if (exprBody is MemberExpression) { var e = (MemberExpression)exprBody; OrderByClip gb = OrderByClip.None; if (orderBy == OrderByOperater.DESC) { gb = gb && new Field(e.Member.Name, e.Expression.Type.Name).Desc; } else { gb = gb && new Field(e.Member.Name, e.Expression.Type.Name).Asc; } return(gb); } if (exprBody is NewExpression) { var exNew = (NewExpression)exprBody; var type = exNew.Constructor.DeclaringType; var list = new List <string>(exNew.Arguments.Count); OrderByClip gb = OrderByClip.None; foreach (MemberExpression member in exNew.Arguments) { if (orderBy == OrderByOperater.DESC) { gb = gb && new Field(member.Member.Name, member.Expression.Type.Name).Desc; } else { gb = gb && new Field(member.Member.Name, member.Expression.Type.Name).Asc; } } return(gb); } if (exprBody is UnaryExpression) { var ueEx = (UnaryExpression)exprBody; return(ToOrderByClipChild(ueEx.Operand, orderBy)); } throw new Exception("暂时不支持的Order by lambda写法!请使用经典写法!"); }
public OrderByOperation(string fieldName, OrderByOperater orderBy) { orderByOperation.Add(fieldName, orderBy); }