Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DLinq / Dlinq / SqlClient / Query / ContainsRowNumberChecker.cs / 1 / ContainsRowNumberChecker.cs
using System; using System.Collections.Generic; using System.Text; namespace System.Data.Linq.SqlClient { internal class SqlRowNumberChecker { Visitor rowNumberVisitor; internal SqlRowNumberChecker() { this.rowNumberVisitor = new Visitor(); } internal bool HasRowNumber(SqlNode node) { this.rowNumberVisitor.Visit(node); return rowNumberVisitor.HasRowNumber; } internal bool HasRowNumber(SqlRow row) { foreach (SqlColumn column in row.Columns) { if (this.HasRowNumber(column)) { return true; } } return false; } internal SqlColumn RowNumberColumn { get { return rowNumberVisitor.HasRowNumber ? rowNumberVisitor.CurrentColumn : null; } } private class Visitor: SqlVisitor { bool hasRowNumber = false; public bool HasRowNumber { get { return hasRowNumber; } } public SqlColumn CurrentColumn { private set; get; } internal override SqlRowNumber VisitRowNumber(SqlRowNumber rowNumber) { this.hasRowNumber = true; return rowNumber; } // shortcuts internal override SqlExpression VisitScalarSubSelect(SqlSubSelect ss) { return ss; } internal override SqlExpression VisitSubSelect(SqlSubSelect ss) { return ss; } internal override SqlRow VisitRow(SqlRow row) { for (int i = 0, n = row.Columns.Count; i < n; i++) { row.Columns[i].Expression = this.VisitExpression(row.Columns[i].Expression); if (this.hasRowNumber) { this.CurrentColumn = row.Columns[i]; break; } } return row; } internal override SqlSelect VisitSelect(SqlSelect select) { this.Visit(select.Row); this.Visit(select.Where); return select; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Collections.Generic; using System.Text; namespace System.Data.Linq.SqlClient { internal class SqlRowNumberChecker { Visitor rowNumberVisitor; internal SqlRowNumberChecker() { this.rowNumberVisitor = new Visitor(); } internal bool HasRowNumber(SqlNode node) { this.rowNumberVisitor.Visit(node); return rowNumberVisitor.HasRowNumber; } internal bool HasRowNumber(SqlRow row) { foreach (SqlColumn column in row.Columns) { if (this.HasRowNumber(column)) { return true; } } return false; } internal SqlColumn RowNumberColumn { get { return rowNumberVisitor.HasRowNumber ? rowNumberVisitor.CurrentColumn : null; } } private class Visitor: SqlVisitor { bool hasRowNumber = false; public bool HasRowNumber { get { return hasRowNumber; } } public SqlColumn CurrentColumn { private set; get; } internal override SqlRowNumber VisitRowNumber(SqlRowNumber rowNumber) { this.hasRowNumber = true; return rowNumber; } // shortcuts internal override SqlExpression VisitScalarSubSelect(SqlSubSelect ss) { return ss; } internal override SqlExpression VisitSubSelect(SqlSubSelect ss) { return ss; } internal override SqlRow VisitRow(SqlRow row) { for (int i = 0, n = row.Columns.Count; i < n; i++) { row.Columns[i].Expression = this.VisitExpression(row.Columns[i].Expression); if (this.hasRowNumber) { this.CurrentColumn = row.Columns[i]; break; } } return row; } internal override SqlSelect VisitSelect(SqlSelect select) { this.Visit(select.Row); this.Visit(select.Where); return select; } } } } // 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
- DataSourceControlBuilder.cs
- ControlType.cs
- XsdDateTime.cs
- CheckBoxList.cs
- DecoratedNameAttribute.cs
- QueryContinueDragEvent.cs
- PerformanceCounter.cs
- DeviceFilterDictionary.cs
- ListViewTableRow.cs
- FixedDocument.cs
- AppDomainProtocolHandler.cs
- ContextStaticAttribute.cs
- ConfigXmlComment.cs
- XmlIlVisitor.cs
- SiteOfOriginPart.cs
- IntellisenseTextBox.designer.cs
- tibetanshape.cs
- DetailsView.cs
- FunctionCommandText.cs
- RTLAwareMessageBox.cs
- HttpResponseMessageProperty.cs
- ClientScriptManager.cs
- QilTypeChecker.cs
- AmbientLight.cs
- COM2PictureConverter.cs
- DataBindEngine.cs
- LoadedOrUnloadedOperation.cs
- HostElement.cs
- AccessibleObject.cs
- WebScriptClientGenerator.cs
- CngAlgorithmGroup.cs
- ReflectionTypeLoadException.cs
- CurrentChangedEventManager.cs
- ViewManager.cs
- FileCodeGroup.cs
- BinaryParser.cs
- UserControlCodeDomTreeGenerator.cs
- ConnectionOrientedTransportBindingElement.cs
- CleanUpVirtualizedItemEventArgs.cs
- TextContainerChangedEventArgs.cs
- RectangleF.cs
- CustomValidator.cs
- SapiRecognizer.cs
- Attachment.cs
- CheckableControlBaseAdapter.cs
- MetadataArtifactLoaderCompositeResource.cs
- PerformanceCountersElement.cs
- DependencyObjectType.cs
- StringPropertyBuilder.cs
- NullableLongMinMaxAggregationOperator.cs
- DocumentPage.cs
- FunctionMappingTranslator.cs
- WebContext.cs
- HTMLTagNameToTypeMapper.cs
- WebPartTransformer.cs
- AttributeCollection.cs
- BehaviorEditorPart.cs
- ApplicationDirectory.cs
- Table.cs
- CommonProperties.cs
- SingleAnimationUsingKeyFrames.cs
- BridgeDataRecord.cs
- ResourceDisplayNameAttribute.cs
- XPathEmptyIterator.cs
- CollectionCodeDomSerializer.cs
- ResourceDefaultValueAttribute.cs
- AttachedPropertyMethodSelector.cs
- InteropEnvironment.cs
- PseudoWebRequest.cs
- Range.cs
- Delegate.cs
- ResourceDisplayNameAttribute.cs
- Queue.cs
- DesignDataSource.cs
- DataSourceGeneratorException.cs
- ForceCopyBuildProvider.cs
- WebEventCodes.cs
- CatalogPartCollection.cs
- WindowsIPAddress.cs
- NegotiationTokenAuthenticatorState.cs
- Set.cs
- RangeBase.cs
- FrugalList.cs
- BoundingRectTracker.cs
- FixedTextBuilder.cs
- ListViewUpdatedEventArgs.cs
- KnownColorTable.cs
- QueryContinueDragEvent.cs
- IdentityValidationException.cs
- MexNamedPipeBindingCollectionElement.cs
- MessagingDescriptionAttribute.cs
- mactripleDES.cs
- RestHandlerFactory.cs
- CodeRemoveEventStatement.cs
- StateItem.cs
- TextDecorationCollectionConverter.cs
- HostedElements.cs
- TreeNodeClickEventArgs.cs
- CodeAssignStatement.cs
- ChtmlPageAdapter.cs