compensatingcollection.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 / DataEntity / System / Data / Common / internal / materialization / compensatingcollection.cs / 1305376 / compensatingcollection.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// [....] 
// [....]
//----------------------------------------------------------------------------- 
 
using System.Collections.Generic;
using System.Linq; 
using System.Linq.Expressions;

namespace System.Data.Common.Internal.Materialization
{ 
    /// 
    /// What we return from our materialization of a collection column must be 
    /// exactly the type that the compilers expected when they generated the 
    /// code that asked for it.  This class wraps our enumerators and derives
    /// from all the possible options, covering all the bases. 
    /// 
    internal class CompensatingCollection : IOrderedQueryable, IOrderedEnumerable
    {
        #region private state 

        ///  
        /// The thing we're compensating for 
        /// 
        private readonly IEnumerable _source; 

        /// 
        /// An expression that returns the source as a constant
        ///  
        private readonly Expression _expression;
 
        #endregion 

        #region constructors 

        public CompensatingCollection(IEnumerable source)
        {
            _source = EntityUtil.CheckArgumentNull(source, "source"); 
            _expression = Expression.Constant(source);
        } 
 
        #endregion
 
        #region IEnumerable Members

        System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
        { 
            return _source.GetEnumerator();
        } 
 
        #endregion
 
        #region IEnumerable Members

        IEnumerator IEnumerable.GetEnumerator()
        { 
            return _source.GetEnumerator();
        } 
 
        #endregion
 
        #region IOrderedEnumerable Members

        IOrderedEnumerable IOrderedEnumerable.CreateOrderedEnumerable(Func keySelector, IComparer comparer, bool descending)
        { 
            throw EntityUtil.NotSupported(System.Data.Entity.Strings.ELinq_CreateOrderedEnumerableNotSupported);
        } 
 
        #endregion
 
        #region IQueryable Members

        Type IQueryable.ElementType
        { 
            get { return typeof(TElement); }
        } 
 
        Expression IQueryable.Expression
        { 
            get { return _expression; }
        }

        IQueryProvider IQueryable.Provider 
        {
            get 
            { 
                throw EntityUtil.NotSupported(System.Data.Entity.Strings.ELinq_UnsupportedQueryableMethod);
            } 
        }

        #endregion
 
        #region IQueryable Members
        #endregion 
    } 
}

// 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