Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DLinq / Dlinq / DataQuery.cs / 1599186 / DataQuery.cs
using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Linq.Expressions; using System.Linq; using System.Reflection; using System.Diagnostics; using System.Runtime.CompilerServices; namespace System.Data.Linq { using System.Data.Linq.Mapping; using System.Data.Linq.Provider; internal sealed class DataQuery: IOrderedQueryable , IQueryProvider, IEnumerable , IOrderedQueryable, IEnumerable, IListSource { DataContext context; Expression queryExpression; private IBindingList cachedList; public DataQuery(DataContext context, Expression expression) { this.context = context; this.queryExpression = expression; } Expression IQueryable.Expression { get { return this.queryExpression; } } Type IQueryable.ElementType { get { return typeof(T); } } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] IQueryable IQueryProvider.CreateQuery(Expression expression) { if (expression == null) throw Error.ArgumentNull("expression"); Type eType = System.Data.Linq.SqlClient.TypeSystem.GetElementType(expression.Type); Type qType = typeof(IQueryable<>).MakeGenericType(eType); if (!qType.IsAssignableFrom(expression.Type)) throw Error.ExpectedQueryableArgument("expression", qType); Type dqType = typeof(DataQuery<>).MakeGenericType(eType); return (IQueryable)Activator.CreateInstance(dqType, new object[] { this.context, expression }); } IQueryable IQueryProvider.CreateQuery(Expression expression) { if (expression == null) throw Error.ArgumentNull("expression"); if (!typeof(IQueryable).IsAssignableFrom(expression.Type)) throw Error.ExpectedQueryableArgument("expression", typeof(IEnumerable)); return new DataQuery(this.context, expression); } object IQueryProvider.Execute(Expression expression) { return this.context.Provider.Execute(expression).ReturnValue; } S IQueryProvider.Execute(Expression expression) { return (S)this.context.Provider.Execute(expression).ReturnValue; } IQueryProvider IQueryable.Provider { get{ return (IQueryProvider)this; } } IEnumerator IEnumerable.GetEnumerator() { return ((IEnumerable)this.context.Provider.Execute(this.queryExpression).ReturnValue).GetEnumerator(); } IEnumeratorIEnumerable .GetEnumerator() { return ((IEnumerable )this.context.Provider.Execute(this.queryExpression).ReturnValue).GetEnumerator(); } bool IListSource.ContainsListCollection { get { return false; } } IList IListSource.GetList() { if (cachedList == null) { cachedList = GetNewBindingList(); } return cachedList; } internal IBindingList GetNewBindingList() { return BindingList.Create (this.context, this); } public override string ToString() { return this.context.Provider.GetQueryText(this.queryExpression); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Linq.Expressions; using System.Linq; using System.Reflection; using System.Diagnostics; using System.Runtime.CompilerServices; namespace System.Data.Linq { using System.Data.Linq.Mapping; using System.Data.Linq.Provider; internal sealed class DataQuery : IOrderedQueryable , IQueryProvider, IEnumerable , IOrderedQueryable, IEnumerable, IListSource { DataContext context; Expression queryExpression; private IBindingList cachedList; public DataQuery(DataContext context, Expression expression) { this.context = context; this.queryExpression = expression; } Expression IQueryable.Expression { get { return this.queryExpression; } } Type IQueryable.ElementType { get { return typeof(T); } } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] IQueryable IQueryProvider.CreateQuery(Expression expression) { if (expression == null) throw Error.ArgumentNull("expression"); Type eType = System.Data.Linq.SqlClient.TypeSystem.GetElementType(expression.Type); Type qType = typeof(IQueryable<>).MakeGenericType(eType); if (!qType.IsAssignableFrom(expression.Type)) throw Error.ExpectedQueryableArgument("expression", qType); Type dqType = typeof(DataQuery<>).MakeGenericType(eType); return (IQueryable)Activator.CreateInstance(dqType, new object[] { this.context, expression }); } IQueryable IQueryProvider.CreateQuery(Expression expression) { if (expression == null) throw Error.ArgumentNull("expression"); if (!typeof(IQueryable).IsAssignableFrom(expression.Type)) throw Error.ExpectedQueryableArgument("expression", typeof(IEnumerable)); return new DataQuery(this.context, expression); } object IQueryProvider.Execute(Expression expression) { return this.context.Provider.Execute(expression).ReturnValue; } S IQueryProvider.Execute(Expression expression) { return (S)this.context.Provider.Execute(expression).ReturnValue; } IQueryProvider IQueryable.Provider { get{ return (IQueryProvider)this; } } IEnumerator IEnumerable.GetEnumerator() { return ((IEnumerable)this.context.Provider.Execute(this.queryExpression).ReturnValue).GetEnumerator(); } IEnumeratorIEnumerable .GetEnumerator() { return ((IEnumerable )this.context.Provider.Execute(this.queryExpression).ReturnValue).GetEnumerator(); } bool IListSource.ContainsListCollection { get { return false; } } IList IListSource.GetList() { if (cachedList == null) { cachedList = GetNewBindingList(); } return cachedList; } internal IBindingList GetNewBindingList() { return BindingList.Create (this.context, this); } public override string ToString() { return this.context.Provider.GetQueryText(this.queryExpression); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DefaultValueMapping.cs
- formatter.cs
- TemplateInstanceAttribute.cs
- CacheEntry.cs
- ArrayList.cs
- SmtpNegotiateAuthenticationModule.cs
- FormatVersion.cs
- SmtpFailedRecipientsException.cs
- GradientBrush.cs
- ListViewItem.cs
- Int32RectConverter.cs
- TextServicesContext.cs
- EntityDataSourceColumn.cs
- LocalizableResourceBuilder.cs
- MessageDecoder.cs
- MessageContractExporter.cs
- NegotiationTokenAuthenticator.cs
- WebPartVerb.cs
- OrderedDictionaryStateHelper.cs
- LocatorBase.cs
- Logging.cs
- PerformanceCounterPermissionAttribute.cs
- CommandDevice.cs
- DataObject.cs
- TableItemProviderWrapper.cs
- DesignOnlyAttribute.cs
- XhtmlBasicSelectionListAdapter.cs
- XmlEnumAttribute.cs
- ConfigurationManager.cs
- SmiContext.cs
- AddressHeaderCollectionElement.cs
- FontCacheUtil.cs
- TemplateXamlParser.cs
- Endpoint.cs
- SecurityDocument.cs
- RoutedEvent.cs
- UnionCqlBlock.cs
- AnimationStorage.cs
- View.cs
- Point3DCollection.cs
- EnumUnknown.cs
- QilValidationVisitor.cs
- QuaternionAnimation.cs
- LoginUtil.cs
- XmlAtomicValue.cs
- OutputBuffer.cs
- Filter.cs
- PrintPreviewControl.cs
- ReferenceCountedObject.cs
- Activation.cs
- invalidudtexception.cs
- IntranetCredentialPolicy.cs
- RepeatBehavior.cs
- WebPartMovingEventArgs.cs
- HotSpotCollection.cs
- NavigatorInvalidBodyAccessException.cs
- Image.cs
- PrivacyNoticeElement.cs
- OutputWindow.cs
- MembershipPasswordException.cs
- PeerApplication.cs
- DefaultProxySection.cs
- AssemblyContextControlItem.cs
- SafeCryptContextHandle.cs
- LoadItemsEventArgs.cs
- PersonalizationStateInfoCollection.cs
- DataGridViewCellPaintingEventArgs.cs
- CompositeCollection.cs
- GcHandle.cs
- PrintDialog.cs
- FormViewCommandEventArgs.cs
- DataGridViewToolTip.cs
- AspNetHostingPermission.cs
- HttpStreamMessageEncoderFactory.cs
- FilterElement.cs
- FloatUtil.cs
- ThreadAbortException.cs
- Switch.cs
- LinkedList.cs
- DataGridViewAccessibleObject.cs
- XmlHierarchicalEnumerable.cs
- PartBasedPackageProperties.cs
- CatalogPartCollection.cs
- DataContractSerializerSection.cs
- SrgsElementFactory.cs
- SymDocumentType.cs
- DetailsViewRow.cs
- OpenFileDialog.cs
- EntityUtil.cs
- FormsAuthenticationUserCollection.cs
- smtpconnection.cs
- ExtenderProvidedPropertyAttribute.cs
- FontFamilyConverter.cs
- AppearanceEditorPart.cs
- AnnotationObservableCollection.cs
- AsyncResult.cs
- ClientConvert.cs
- PropertyTabAttribute.cs
- UseLicense.cs
- XmlQualifiedName.cs