Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DLinq / Dlinq / DataQuery.cs / 1 / 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; 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); } } 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; 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); } } 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
- UpdatePanel.cs
- InkCanvas.cs
- Message.cs
- CollectionViewGroupRoot.cs
- SymbolDocumentGenerator.cs
- SafeHandles.cs
- FixedTextPointer.cs
- ObjectViewFactory.cs
- CodeFieldReferenceExpression.cs
- ObjectAssociationEndMapping.cs
- DbConnectionInternal.cs
- WizardPanel.cs
- RelationshipSet.cs
- RuntimeConfigurationRecord.cs
- EventBuilder.cs
- ReferentialConstraint.cs
- Literal.cs
- PageAsyncTaskManager.cs
- ExpressionEditor.cs
- BindingSource.cs
- ResourceDisplayNameAttribute.cs
- ConsoleEntryPoint.cs
- mactripleDES.cs
- WebPartsPersonalizationAuthorization.cs
- CustomValidator.cs
- XsdDataContractImporter.cs
- WebConvert.cs
- SiteMapNodeItem.cs
- WebPartTransformer.cs
- ControlTemplate.cs
- SystemException.cs
- ProcessInputEventArgs.cs
- CompilerGlobalScopeAttribute.cs
- ValidationHelpers.cs
- Expressions.cs
- SymLanguageType.cs
- XmlAtomicValue.cs
- XmlQueryOutput.cs
- HashCodeCombiner.cs
- SmiRecordBuffer.cs
- SmiTypedGetterSetter.cs
- AuthenticationModuleElementCollection.cs
- EmptyEnumerator.cs
- PeerToPeerException.cs
- BaseParser.cs
- AttachmentCollection.cs
- EntityDataSourceChangedEventArgs.cs
- DbXmlEnabledProviderManifest.cs
- ScrollPattern.cs
- MethodToken.cs
- BinaryFormatterWriter.cs
- PageStatePersister.cs
- LiteralControl.cs
- DurableOperationAttribute.cs
- HexParser.cs
- DeferredTextReference.cs
- SkipQueryOptionExpression.cs
- TextSelection.cs
- TcpAppDomainProtocolHandler.cs
- DesignerMetadata.cs
- ScriptResourceInfo.cs
- LineServicesRun.cs
- SqlTriggerContext.cs
- Decoder.cs
- Zone.cs
- PropertyNames.cs
- StylusPointPropertyUnit.cs
- CodeCompiler.cs
- ObjectCloneHelper.cs
- DataGridViewCheckBoxCell.cs
- ExpressionNode.cs
- CheckBoxFlatAdapter.cs
- MutableAssemblyCacheEntry.cs
- DbException.cs
- QueryProcessor.cs
- SeekStoryboard.cs
- FrameworkTextComposition.cs
- HtmlInputPassword.cs
- TypeResolver.cs
- CancelEventArgs.cs
- ReadOnlyAttribute.cs
- IisTraceListener.cs
- BitmapCodecInfoInternal.cs
- InkCollectionBehavior.cs
- UIPropertyMetadata.cs
- ErrorFormatter.cs
- DecoderFallback.cs
- bindurihelper.cs
- counter.cs
- Calendar.cs
- BigInt.cs
- Point3D.cs
- EntityProviderServices.cs
- DropSource.cs
- ProfileManager.cs
- TraceRecord.cs
- XmlDataCollection.cs
- ConnectionStringsExpressionBuilder.cs
- CodeTypeDeclaration.cs
- ElementNotEnabledException.cs