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
- BrowserCapabilitiesCompiler.cs
- ScriptRegistrationManager.cs
- FilteredXmlReader.cs
- FixedPageProcessor.cs
- FactoryId.cs
- SwitchLevelAttribute.cs
- XPathException.cs
- BorderGapMaskConverter.cs
- Registration.cs
- EntityDataSourceEntityTypeFilterItem.cs
- CompilerParameters.cs
- UnmanagedMemoryStream.cs
- ListViewSelectEventArgs.cs
- MaskedTextBoxTextEditorDropDown.cs
- FontUnitConverter.cs
- DataGridToolTip.cs
- dataprotectionpermission.cs
- PageAdapter.cs
- IntellisenseTextBox.cs
- TokenizerHelper.cs
- EmptyQuery.cs
- DynamicFilter.cs
- odbcmetadatafactory.cs
- SequenceDesigner.cs
- Calendar.cs
- AndCondition.cs
- Registry.cs
- ToolStripDropDownButton.cs
- BaseTreeIterator.cs
- TreeNodeConverter.cs
- TcpDuplicateContext.cs
- DataGridViewTextBoxCell.cs
- RangeBase.cs
- XPathDocumentBuilder.cs
- WindowsEditBoxRange.cs
- TypedTableBaseExtensions.cs
- WorkflowItemPresenter.cs
- SQLMembershipProvider.cs
- CharAnimationBase.cs
- ThreadAbortException.cs
- ComplexPropertyEntry.cs
- StreamWriter.cs
- EntitySqlQueryCacheKey.cs
- Converter.cs
- DelegateSerializationHolder.cs
- OneOfConst.cs
- FileAuthorizationModule.cs
- DocumentSchemaValidator.cs
- RootProfilePropertySettingsCollection.cs
- Control.cs
- LineVisual.cs
- TextEndOfParagraph.cs
- CorrelationQuery.cs
- ADConnectionHelper.cs
- WmfPlaceableFileHeader.cs
- Point4DConverter.cs
- DriveInfo.cs
- WebReferencesBuildProvider.cs
- OAVariantLib.cs
- MulticastDelegate.cs
- MemoryStream.cs
- SelfIssuedAuthAsymmetricKey.cs
- WebServiceReceiveDesigner.cs
- DateTimePicker.cs
- Sentence.cs
- DataExpression.cs
- StreamSecurityUpgradeProvider.cs
- InheritanceRules.cs
- CopyAction.cs
- ChineseLunisolarCalendar.cs
- DBPropSet.cs
- ResourceManager.cs
- EditCommandColumn.cs
- DependencyPropertyValueSerializer.cs
- MemoryFailPoint.cs
- DragEventArgs.cs
- TransactionScope.cs
- Debug.cs
- SimpleWorkerRequest.cs
- ClientSession.cs
- ScriptServiceAttribute.cs
- MergablePropertyAttribute.cs
- metrodevice.cs
- SocketPermission.cs
- xmlfixedPageInfo.cs
- DrawingDrawingContext.cs
- NativeMethods.cs
- _NestedSingleAsyncResult.cs
- ListViewAutomationPeer.cs
- WS2007FederationHttpBindingCollectionElement.cs
- SqlCacheDependencySection.cs
- DependencyObjectPropertyDescriptor.cs
- PrivateFontCollection.cs
- DrawingCollection.cs
- TimeSpanSecondsConverter.cs
- ChooseAction.cs
- ZipFileInfoCollection.cs
- LoginViewDesigner.cs
- FragmentQueryKB.cs
- exports.cs