private TableQuery <T> AddOrderBy <U>(Expression <Func <T, U> > orderExpr, bool asc) { if (orderExpr.NodeType == ExpressionType.Lambda) { LambdaExpression lambda = orderExpr; MemberExpression mem = null; UnaryExpression unary = lambda.Body as UnaryExpression; if (unary != null && unary.NodeType == ExpressionType.Convert) { mem = unary.Operand as MemberExpression; } else { mem = lambda.Body as MemberExpression; } if (mem != null && mem.Expression.NodeType == ExpressionType.Parameter) { TableQuery <T> q = Clone <T>(); if (q._orderBys == null) { q._orderBys = new List <Ordering>(); } q._orderBys.Add(new Ordering { ColumnName = this.Table.FindColumnWithPropertyName(mem.Member.Name).Name, Ascending = asc }); return(q); } throw new NotSupportedException("Order By does not support: " + orderExpr); } throw new NotSupportedException("Must be a predicate"); }
public TableQuery <U> Clone <U>() { TableQuery <U> ins = new TableQuery <U>(this._conn, this.Table); ins._where = _where; ins._deferred = _deferred; if (_orderBys != null) { ins._orderBys = new List <Ordering>(_orderBys); } ins._betweenBy = _betweenBy; ins._limit = _limit; ins._offset = _offset; //Select ins._selector = _selector; //Join ins._joinInner = _joinInner; ins._joinInnerKeySelector = _joinInnerKeySelector; ins._joinOuter = _joinOuter; ins._joinOuterKeySelector = _joinOuterKeySelector; ins._joinSelector = _joinSelector; return(ins); }
public T FirstOrDefault() { TableQuery <T> query = Take(1); return(query.ToList().FirstOrDefault()); }