private void AssertItemQuery(IDb4oLinqQuery<int> query) { AssertQuery("(Item)", () => { AssertSequence(new[] { 1 }, query); }); }
public static IDb4oLinqQuery <TSource> Where <TSource>(this IDb4oLinqQuery <TSource> self, Expression <Func <TSource, bool> > expression) { return(Process(self, query => new WhereClauseVisitor().Process(expression), data => data.UnoptimizedWhere(expression.Compile()) )); }
private static void PrintAll(IDb4oLinqQuery <Issue> query) { foreach (var item in query) { Console.WriteLine(item); } }
public static IDb4oLinqQuery <TSource> ThenByDescending <TSource, TKey>(this IDb4oLinqQuery <TSource> self, Expression <Func <TSource, TKey> > expression) { return(ProcessOrderBy(self, new OrderByDescendingClauseVisitor(), expression, data => data.UnoptimizedThenByDescending(expression.Compile()) )); }
private void AssertItemQuery(IDb4oLinqQuery <int> query) { AssertQuery("(Item)", () => { AssertSequence(new[] { 1 }, query); }); }
private static IDb4oLinqQuery <TSource> Process <TSource>( IDb4oLinqQuery <TSource> query, Func <Db4oQuery <TSource>, IQueryBuilderRecord> queryProcessor, Func <IDb4oLinqQueryInternal <TSource>, IEnumerable <TSource> > fallbackProcessor) { if (query == null) { throw new ArgumentNullException("query"); } var candidate = query as Db4oQuery <TSource>; if (candidate == null) { return(new UnoptimizedQuery <TSource>(fallbackProcessor((IDb4oLinqQueryInternal <TSource>)EnsureDb4oQuery(query)))); } try { IQueryBuilderRecord record = queryProcessor(candidate); return(new Db4oQuery <TSource>(candidate, record)); } catch (QueryOptimizationException) { return(new UnoptimizedQuery <TSource>(fallbackProcessor(candidate))); } }
private static IDb4oLinqQuery <TSource> ProcessOrderBy <TSource, TKey>( IDb4oLinqQuery <TSource> query, OrderByClauseVisitorBase visitor, Expression <Func <TSource, TKey> > expression, Func <IDb4oLinqQueryInternal <TSource>, IEnumerable <TSource> > fallbackProcessor) { return(Process(query, q => visitor.Process(expression), fallbackProcessor)); }
/// <summary> /// Creates a wrapper for a Db4o query. /// </summary> /// <param name="inner">The inner query.</param> public Db4oAmbientDataQuery(IDb4oLinqQuery <T> inner) { if (inner == null) { throw new ArgumentNullException("inner"); } this.inner = inner; }
private void AssertOrderByNameDescAgeAsc(string expectedQuery, IDb4oLinqQuery <Person> query) { AssertQuerySequence( query, expectedQuery, from p in People() orderby p.Age ascending, p.Name descending select p); }
/// <summary> /// 计算分页后的总页数 /// </summary> /// <param name="itemQuantity">每页承载的实体数目</param> /// <returns>分页后的总页数</returns> public static int PaginationCount <T>(this IDb4oLinqQuery <T> o, int itemQuantity) { var x = o.Count(); if (x == 0) { return(0); } return(x / itemQuantity + (x % itemQuantity > 0 ? 1 : 0)); }
private static IDb4oLinqQuery <TSource> EnsureDb4oQuery <TSource>(IDb4oLinqQuery <TSource> query) { var placeHolderQuery = query as PlaceHolderQuery <TSource>; if (placeHolderQuery == null) { return(query); } return(new Db4oQuery <TSource>(placeHolderQuery.QueryFactory)); }
public static IDb4oLinqQuery <TRet> Select <TSource, TRet>(this IDb4oLinqQuery <TSource> self, Func <TSource, TRet> selector) { var placeHolderQuery = self as PlaceHolderQuery <TSource>; if (placeHolderQuery != null) { return(new Db4oQuery <TRet>(placeHolderQuery.QueryFactory)); } return(new UnoptimizedQuery <TRet>(Enumerable.Select(self, selector))); }
public static IDb4oLinqQuery <TSource> Skip <TSource>(this IDb4oLinqQuery <TSource> query, int itemsToSkip) { if (query == null) { throw new ArgumentNullException("query"); } var skipable = query as IDelayedSelectOperation <TSource>; if (null != skipable) { return(new UnoptimizedQuery <TSource>(skipable.Skip(itemsToSkip))); } return(new UnoptimizedQuery <TSource>(Enumerable.Skip(query, itemsToSkip))); }
public static int Count <TSource>(this IDb4oLinqQuery <TSource> self) { if (self == null) { throw new ArgumentNullException("self"); } var query = self as Db4oQuery <TSource>; if (query != null) { return(query.Count); } return(Enumerable.Count(self)); }
public static IDb4oLinqQueryable <TSource> AsQueryable <TSource>(this IDb4oLinqQuery <TSource> self) { return(Db4oLinqQueryExtensions.AsQueryable(self)); }
/// <summary> /// 分页获取集合中的实体对象集合 /// </summary> /// <param name="pageNumber">当前页数,从0开始记数</param> /// <param name="itemQuantity">每页承载的实体数目</param> /// <returns>分页后的实体对象集合</returns> public static IEnumerable <T> PaginationGet <T>(this IDb4oLinqQuery <T> o, int pageNumber, int itemQuantity) { return(o.Skip(pageNumber * itemQuantity).Take(itemQuantity)); }
public Db4oQueryable(IDb4oLinqQuery <T> query) { Expression = Expression.Constant(this); _query = query; }
public static IDb4oLinqQuery <TSource> ThenByDescending <TSource, TKey>(this IDb4oLinqQuery <TSource> self, Expression <Func <TSource, TKey> > expression) { return(Db4oLinqQueryExtensions.ThenByDescending(self, expression)); }
public static IDb4oLinqQuery <TSource> Where <TSource>(this IDb4oLinqQuery <TSource> self, Expression <Func <TSource, bool> > expression) { return(Db4oLinqQueryExtensions.Where(self, expression)); }
public static IDb4oLinqQuery <TRet> Select <TSource, TRet>(this IDb4oLinqQuery <TSource> self, Func <TSource, TRet> selector) { return(Db4oLinqQueryExtensions.Select(self, selector)); }
public static IDb4oLinqQuery <TSource> OrderBy <TSource, TKey>(this IDb4oLinqQuery <TSource> self, Expression <Func <TSource, TKey> > expression) { return(Db4oLinqQueryExtensions.OrderBy(self, expression)); }
public static int Count <TSource>(this IDb4oLinqQuery <TSource> self) { return(Db4oLinqQueryExtensions.Count(self)); }
public static IDb4oLinqQueryable <TSource> AsQueryable <TSource>(this IDb4oLinqQuery <TSource> self) { return(new Db4oQueryable <TSource>(self)); }
protected void AssertQuery <T>(IDb4oLinqQuery <T> query, string expectedQuery, IEnumerable <T> expectedSet) { AssertQuery(query, expectedQuery, actualSet => AssertSet(expectedSet, actualSet)); }
private void AssertOrderByNameDescAgeAsc(IDb4oLinqQuery <Person> query) { string expectedQuery = "(Person(Name)(Age))(orderby Age asc)(orderby Name desc)"; AssertOrderByNameDescAgeAsc(expectedQuery, query); }
public int Count <T>(IDb4oLinqQuery <T> collection) { return(collection.Count()); }