/// <summary>
        /// Produces a new query ordered by a comparison expression in descending order.
        /// </summary>
        /// <typeparam name="TSource">The type of object being queried.</typeparam>
        /// <typeparam name="TKey">The sort key type.</typeparam>
        /// <param name="self">The query.</param>
        /// <param name="expression">The sort comparison expression.</param>
        /// <returns>The ordered query.</returns>
        public static IAmbientDataQuery <TSource> OrderByDescending <TSource, TKey>(this IAmbientDataQuery <TSource> self, Expression <System.Func <TSource, TKey> > expression)
        {
            var query = (Db4oAmbientDataQuery <TSource>)self;

            return(new Db4oAmbientDataQuery <TSource>(query.Inner.OrderByDescending(expression)));
        }
        /// <summary>
        /// Produces a new query to filter another query by a criteria.
        /// </summary>
        /// <typeparam name="TSource">The type of object being queried.</typeparam>
        /// <param name="self">The query.</param>
        /// <param name="expression">The filter expression.</param>
        /// <returns>The filtered query.</returns>
        public static IAmbientDataQuery <TSource> Where <TSource>(this IAmbientDataQuery <TSource> self, Expression <System.Func <TSource, bool> > expression)
        {
            var query = (Db4oAmbientDataQuery <TSource>)self;

            return(new Db4oAmbientDataQuery <TSource>(query.Inner.Where(expression)));
        }
        /// <summary>
        /// Counts the number of objects produced by the query.
        /// </summary>
        /// <typeparam name="TSource">The type of object being queried.</typeparam>
        /// <param name="self">The query.</param>
        /// <returns>The number of objects.</returns>
        public static int Count <TSource>(this IAmbientDataQuery <TSource> self)
        {
            var query = (Db4oAmbientDataQuery <TSource>)self;

            return(query.Inner.Count());
        }
        /// <summary>
        /// Produces a new query to select a projection of a component of another query.
        /// </summary>
        /// <typeparam name="TSource">The type of object being queried.</typeparam>
        /// <typeparam name="TRet">The projection result type.</typeparam>
        /// <param name="self">The query.</param>
        /// <param name="selector">The selection expression.</param>
        /// <returns>The projected query.</returns>
        public static IAmbientDataQuery <TRet> Select <TSource, TRet>(this IAmbientDataQuery <TSource> self, System.Func <TSource, TRet> selector)
        {
            var query = (Db4oAmbientDataQuery <TSource>)self;

            return(new Db4oAmbientDataQuery <TRet>(query.Inner.Select(selector)));
        }
        /// <summary>
        /// Produces a new query ordered by an additional comparison expression in ascending order.
        /// </summary>
        /// <typeparam name="TSource">The type of object being queried.</typeparam>
        /// <typeparam name="TKey">The sort key type.</typeparam>
        /// <param name="self">The query.</param>
        /// <param name="expression">The sort comparison expression.</param>
        /// <returns>The ordered query.</returns>
        public static IAmbientDataQuery <TSource> ThenBy <TSource, TKey>(this IAmbientDataQuery <TSource> self, Expression <System.Func <TSource, TKey> > expression)
        {
            var query = (Db4oAmbientDataQuery <TSource>)self;

            return(new Db4oAmbientDataQuery <TSource>(query.Inner.ThenBy(expression)));
        }