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
- XmlEventCache.cs
- NegotiationTokenAuthenticatorStateCache.cs
- AuthorizationRule.cs
- MetabaseSettingsIis7.cs
- CompiledQueryCacheKey.cs
- DocumentViewerAutomationPeer.cs
- GroupItemAutomationPeer.cs
- WebBrowserPermission.cs
- OdbcRowUpdatingEvent.cs
- PeerDuplexChannel.cs
- FrameAutomationPeer.cs
- DynamicUpdateCommand.cs
- TextDecoration.cs
- _NetworkingPerfCounters.cs
- Journaling.cs
- SplineKeyFrames.cs
- ToolStripMenuItemDesigner.cs
- SpecularMaterial.cs
- MessageFilter.cs
- EntityDesignerUtils.cs
- EncoderExceptionFallback.cs
- StreamReader.cs
- SqlProviderManifest.cs
- WindowsPrincipal.cs
- StateDesigner.Layouts.cs
- DataStreamFromComStream.cs
- EditBehavior.cs
- CancellationTokenRegistration.cs
- ServiceNameCollection.cs
- PrintControllerWithStatusDialog.cs
- EventSinkHelperWriter.cs
- SQLDateTimeStorage.cs
- XamlValidatingReader.cs
- XmlSchemaSet.cs
- ZipIOExtraFieldZip64Element.cs
- StrongTypingException.cs
- XPathNavigatorReader.cs
- NativeMethodsOther.cs
- SqlRemoveConstantOrderBy.cs
- ListViewPagedDataSource.cs
- StyleHelper.cs
- EntityUtil.cs
- Underline.cs
- MergeLocalizationDirectives.cs
- Metadata.cs
- DataList.cs
- ReturnValue.cs
- TextRunProperties.cs
- AnnotationService.cs
- ProfileService.cs
- FixedFlowMap.cs
- DynamicActivityTypeDescriptor.cs
- RoutedEventHandlerInfo.cs
- NotifyIcon.cs
- FragmentQuery.cs
- BindToObject.cs
- GridViewRowCollection.cs
- WindowsUserNameSecurityTokenAuthenticator.cs
- DoubleLink.cs
- VisualStateGroup.cs
- AuthenticationService.cs
- DecoratedNameAttribute.cs
- IsolationInterop.cs
- BulletChrome.cs
- ContextInformation.cs
- smtppermission.cs
- PersonalizationProviderCollection.cs
- XmlReaderSettings.cs
- codemethodreferenceexpression.cs
- ResourcePool.cs
- XmlSchemaDocumentation.cs
- ConfigUtil.cs
- TextContainerChangedEventArgs.cs
- FunctionDetailsReader.cs
- ECDiffieHellman.cs
- UDPClient.cs
- TemplateContentLoader.cs
- httpstaticobjectscollection.cs
- Application.cs
- SafeNativeMethodsMilCoreApi.cs
- Line.cs
- ToggleButton.cs
- RemotingConfiguration.cs
- SecurityException.cs
- OrderablePartitioner.cs
- XmlElementAttribute.cs
- UnsafeNativeMethods.cs
- BitSet.cs
- DateTimeOffsetAdapter.cs
- dsa.cs
- DetailsViewRowCollection.cs
- TypeReference.cs
- WindowHideOrCloseTracker.cs
- GradientBrush.cs
- CreateUserErrorEventArgs.cs
- CodeIdentifier.cs
- AvTraceDetails.cs
- GridViewUpdateEventArgs.cs
- HebrewCalendar.cs
- AttributeQuery.cs