Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- CodeArrayCreateExpression.cs
- JsonFormatWriterGenerator.cs
- GacUtil.cs
- ClientRoleProvider.cs
- LineServicesCallbacks.cs
- ListParagraph.cs
- PropertyDescriptors.cs
- ProfilePropertyNameValidator.cs
- ITreeGenerator.cs
- ThreadPool.cs
- XmlSchemaSimpleContentRestriction.cs
- FileDetails.cs
- X509Chain.cs
- FixedSOMLineRanges.cs
- DockingAttribute.cs
- TaskSchedulerException.cs
- SoapSchemaMember.cs
- LinkClickEvent.cs
- HttpStreamXmlDictionaryWriter.cs
- IISUnsafeMethods.cs
- PropertyChangedEventManager.cs
- WsatConfiguration.cs
- TimeZone.cs
- Control.cs
- XPathDescendantIterator.cs
- NamespaceList.cs
- XslVisitor.cs
- PrinterSettings.cs
- CodeVariableDeclarationStatement.cs
- TextRange.cs
- QilTypeChecker.cs
- UmAlQuraCalendar.cs
- LookupBindingPropertiesAttribute.cs
- VirtualDirectoryMapping.cs
- WebServiceClientProxyGenerator.cs
- sqlinternaltransaction.cs
- GroupBox.cs
- GACIdentityPermission.cs
- ProvidersHelper.cs
- GlyphsSerializer.cs
- XmlBinaryReaderSession.cs
- PtsHelper.cs
- LazyTextWriterCreator.cs
- DesignerLoader.cs
- CheckPair.cs
- ModuleElement.cs
- FileDialogPermission.cs
- ProxyWebPart.cs
- ExpressionBuilderCollection.cs
- ValidatorCollection.cs
- FixedSOMPage.cs
- SQLDecimal.cs
- AttributeCollection.cs
- TextSimpleMarkerProperties.cs
- DocumentViewerBaseAutomationPeer.cs
- ParentUndoUnit.cs
- XmlParser.cs
- PointHitTestParameters.cs
- WebPartHeaderCloseVerb.cs
- EndpointDiscoveryBehavior.cs
- WorkflowMessageEventArgs.cs
- SqlFactory.cs
- Stack.cs
- SQLInt32.cs
- ConnectionManagementElement.cs
- TriggerActionCollection.cs
- FolderBrowserDialog.cs
- SchemaNames.cs
- MDIWindowDialog.cs
- Italic.cs
- MethodRental.cs
- FontUnitConverter.cs
- SimpleBitVector32.cs
- ParameterCollection.cs
- XmlSchemaObject.cs
- SoapSchemaMember.cs
- BinaryFormatter.cs
- GregorianCalendar.cs
- LinkUtilities.cs
- SiteMapPath.cs
- PrintPreviewGraphics.cs
- sitestring.cs
- DBSqlParserTable.cs
- BoundConstants.cs
- SpeakCompletedEventArgs.cs
- Gdiplus.cs
- XmlQueryTypeFactory.cs
- ExtendedProperty.cs
- MDIClient.cs
- XmlUnspecifiedAttribute.cs
- FederatedMessageSecurityOverHttp.cs
- Monitor.cs
- PolicyDesigner.cs
- Decimal.cs
- PasswordBox.cs
- DropShadowEffect.cs
- FamilyTypefaceCollection.cs
- ResumeStoryboard.cs
- NumericExpr.cs
- ModifyActivitiesPropertyDescriptor.cs