Example #1
0
		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())
                    ));
 }
Example #3
0
 private static void PrintAll(IDb4oLinqQuery <Issue> query)
 {
     foreach (var item in query)
     {
         Console.WriteLine(item);
     }
 }
Example #4
0
 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));
 }
Example #8
0
        /// <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;
        }
Example #9
0
 private void AssertOrderByNameDescAgeAsc(string expectedQuery, IDb4oLinqQuery <Person> query)
 {
     AssertQuerySequence(
         query,
         expectedQuery,
         from p in People()
         orderby p.Age ascending, p.Name descending
         select p);
 }
Example #10
0
    /// <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));
        }
Example #15
0
 public static IDb4oLinqQueryable <TSource> AsQueryable <TSource>(this IDb4oLinqQuery <TSource> self)
 {
     return(Db4oLinqQueryExtensions.AsQueryable(self));
 }
Example #16
0
 /// <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));
 }
Example #17
0
 public Db4oQueryable(IDb4oLinqQuery <T> query)
 {
     Expression = Expression.Constant(this);
     _query     = query;
 }
Example #18
0
 public static IDb4oLinqQuery <TSource> ThenByDescending <TSource, TKey>(this IDb4oLinqQuery <TSource> self, Expression <Func <TSource, TKey> > expression)
 {
     return(Db4oLinqQueryExtensions.ThenByDescending(self, expression));
 }
Example #19
0
 public static IDb4oLinqQuery <TSource> Where <TSource>(this IDb4oLinqQuery <TSource> self, Expression <Func <TSource, bool> > expression)
 {
     return(Db4oLinqQueryExtensions.Where(self, expression));
 }
Example #20
0
 public static IDb4oLinqQuery <TRet> Select <TSource, TRet>(this IDb4oLinqQuery <TSource> self, Func <TSource, TRet> selector)
 {
     return(Db4oLinqQueryExtensions.Select(self, selector));
 }
Example #21
0
 public static IDb4oLinqQuery <TSource> OrderBy <TSource, TKey>(this IDb4oLinqQuery <TSource> self, Expression <Func <TSource, TKey> > expression)
 {
     return(Db4oLinqQueryExtensions.OrderBy(self, expression));
 }
Example #22
0
 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);
        }
Example #26
0
 public int Count <T>(IDb4oLinqQuery <T> collection)
 {
     return(collection.Count());
 }