SkipQueryOptionExpression.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataWeb / Client / System / Data / Services / Client / ALinq / SkipQueryOptionExpression.cs / 1305376 / SkipQueryOptionExpression.cs

                            //---------------------------------------------------------------------- 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//  
//      Respresents a skip query option in resource bound expression tree.
//  
// 
// @owner  [....]
//--------------------------------------------------------------------- 

namespace System.Data.Services.Client
{
    using System; 
    using System.Diagnostics;
    using System.Linq.Expressions; 
 
    /// 
    /// An resource specific expression representing a skip query option. 
    /// 
    [DebuggerDisplay("SkipQueryOptionExpression {SkipAmount}")]
    internal class SkipQueryOptionExpression : QueryOptionExpression
    { 
        /// amount to skip
        private ConstantExpression skipAmount; 
 
        /// 
        /// Creates a SkipQueryOption expression 
        /// 
        /// the return type of the expression
        /// the query option value
        internal SkipQueryOptionExpression(Type type, ConstantExpression skipAmount) 
            : base((ExpressionType)ResourceExpressionType.SkipQueryOption, type)
        { 
            this.skipAmount = skipAmount; 
        }
 
        /// 
        /// query option value
        /// 
        internal ConstantExpression SkipAmount 
        {
            get 
            { 
                return this.skipAmount;
            } 
        }

        /// 
        /// Composes the  expression with this one when it's specified multiple times. 
        /// 
        ///  to compose. 
        ///  
        /// The expression that results from composing the  expression with this one.
        ///  
        internal override QueryOptionExpression ComposeMultipleSpecification(QueryOptionExpression previous)
        {
            Debug.Assert(previous != null, "other != null");
            Debug.Assert(previous.GetType() == this.GetType(), "other.GetType == this.GetType() -- otherwise it's not the same specification"); 
            Debug.Assert(this.skipAmount != null, "this.skipAmount != null");
            Debug.Assert( 
                this.skipAmount.Type == typeof(int), 
                "this.skipAmount.Type == typeof(int) -- otherwise it wouldn't have matched the Enumerable.Skip(source, int count) signature");
            int thisValue = (int)this.skipAmount.Value; 
            int previousValue = (int)((SkipQueryOptionExpression)previous).skipAmount.Value;
            return new SkipQueryOptionExpression(this.Type, Expression.Constant(thisValue + previousValue, typeof(int)));
        }
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK