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
- XmlILIndex.cs
- userdatakeys.cs
- SQLBinary.cs
- DataGridViewControlCollection.cs
- DateTimeStorage.cs
- PluralizationServiceUtil.cs
- AssemblyAttributes.cs
- PropertyDescriptorGridEntry.cs
- ClientScriptManager.cs
- RenamedEventArgs.cs
- Wildcard.cs
- HtmlInputRadioButton.cs
- AdCreatedEventArgs.cs
- FlowPanelDesigner.cs
- WebControlParameterProxy.cs
- SqlDataSourceSelectingEventArgs.cs
- SafeSecurityHandles.cs
- StrongNameKeyPair.cs
- NullReferenceException.cs
- TemplatePartAttribute.cs
- CustomAttributeSerializer.cs
- HttpListenerException.cs
- FileDialog_Vista.cs
- Debug.cs
- UserControlBuildProvider.cs
- TcpClientChannel.cs
- SafeNativeMethods.cs
- TranslateTransform.cs
- ProfileInfo.cs
- Nullable.cs
- HostingEnvironment.cs
- FlowPosition.cs
- MbpInfo.cs
- ExpressionConverter.cs
- Avt.cs
- AlphabeticalEnumConverter.cs
- LinearKeyFrames.cs
- OleDbMetaDataFactory.cs
- Parser.cs
- mediaeventshelper.cs
- AccessibleObject.cs
- WmfPlaceableFileHeader.cs
- CroppedBitmap.cs
- XamlSerializer.cs
- XmlArrayAttribute.cs
- WpfXamlLoader.cs
- HttpHandlerActionCollection.cs
- BindingCompleteEventArgs.cs
- ResXResourceSet.cs
- OperationContextScope.cs
- PageFunction.cs
- PersistenceTypeAttribute.cs
- RuntimeVariablesExpression.cs
- ResourceDisplayNameAttribute.cs
- TextParagraphProperties.cs
- FilterQuery.cs
- LayoutSettings.cs
- RemoteCryptoDecryptRequest.cs
- DataDocumentXPathNavigator.cs
- NonVisualControlAttribute.cs
- MetadataUtil.cs
- DataGridPageChangedEventArgs.cs
- ReadonlyMessageFilter.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- ISAPIApplicationHost.cs
- RoleManagerEventArgs.cs
- ThrowHelper.cs
- Rect.cs
- TableItemProviderWrapper.cs
- ReadOnlyNameValueCollection.cs
- InstanceCreationEditor.cs
- XPathConvert.cs
- GroupItemAutomationPeer.cs
- DeadCharTextComposition.cs
- CoreSwitches.cs
- ApplicationFileCodeDomTreeGenerator.cs
- EventArgs.cs
- SmtpNetworkElement.cs
- OrderByQueryOptionExpression.cs
- ComponentConverter.cs
- TableLayoutSettings.cs
- InkSerializer.cs
- RSAPKCS1SignatureFormatter.cs
- SslStream.cs
- Method.cs
- LicFileLicenseProvider.cs
- GiveFeedbackEvent.cs
- ItemCollection.cs
- HwndHostAutomationPeer.cs
- LoginName.cs
- RoutedEventHandlerInfo.cs
- TransformProviderWrapper.cs
- Roles.cs
- AssemblyHash.cs
- ApplicationFileParser.cs
- SoapAttributes.cs
- CodePageUtils.cs
- XPathAncestorIterator.cs
- SetState.cs
- TemporaryBitmapFile.cs