Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- SubqueryRules.cs
- BeginEvent.cs
- BamlRecordWriter.cs
- NextPreviousPagerField.cs
- BoundingRectTracker.cs
- BufferedWebEventProvider.cs
- AttributeUsageAttribute.cs
- Margins.cs
- SendSecurityHeaderElement.cs
- UniqueIdentifierService.cs
- TypeKeyValue.cs
- GrammarBuilderWildcard.cs
- DelayLoadType.cs
- CharacterBuffer.cs
- EventArgs.cs
- StateMachineHelpers.cs
- UnionCodeGroup.cs
- Baml2006KeyRecord.cs
- OracleFactory.cs
- CapabilitiesUse.cs
- MetaModel.cs
- WaitHandle.cs
- XmlSchemaProviderAttribute.cs
- MenuAutomationPeer.cs
- PolicyLevel.cs
- OdbcTransaction.cs
- ListBindableAttribute.cs
- XmlSchemaExternal.cs
- Menu.cs
- ProfilePropertyMetadata.cs
- PropertyBuilder.cs
- LabelEditEvent.cs
- ClientApiGenerator.cs
- RegistryConfigurationProvider.cs
- BackStopAuthenticationModule.cs
- SchemaConstraints.cs
- WsdlImporterElementCollection.cs
- DynamicResourceExtension.cs
- MoveSizeWinEventHandler.cs
- XmlWellformedWriterHelpers.cs
- Parsers.cs
- WebHeaderCollection.cs
- IWorkflowDebuggerService.cs
- ExtensionMethods.cs
- FontStretchConverter.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- Base64Decoder.cs
- BStrWrapper.cs
- XmlSchemaSearchPattern.cs
- UriScheme.cs
- ClosableStream.cs
- TypeFieldSchema.cs
- EditorZoneBase.cs
- ProviderMetadataCachedInformation.cs
- FixedNode.cs
- DataMisalignedException.cs
- StretchValidation.cs
- BufferedStream2.cs
- ReadonlyMessageFilter.cs
- EventlogProvider.cs
- TagMapInfo.cs
- BuildProvidersCompiler.cs
- SmiContextFactory.cs
- DistributedTransactionPermission.cs
- XmlSchemaCollection.cs
- IItemProperties.cs
- AuthenticatedStream.cs
- FlowLayoutPanel.cs
- EntityReference.cs
- SessionSymmetricTransportSecurityProtocolFactory.cs
- Html32TextWriter.cs
- LinqDataSourceHelper.cs
- ToolZone.cs
- LockedHandleGlyph.cs
- WhitespaceSignificantCollectionAttribute.cs
- UpdatePanel.cs
- AttributeProviderAttribute.cs
- TreeBuilder.cs
- Pen.cs
- ServiceOperation.cs
- SqlConnectionString.cs
- UdpConstants.cs
- ElementNotAvailableException.cs
- OperationFormatUse.cs
- DmlSqlGenerator.cs
- EncodingConverter.cs
- DropShadowBitmapEffect.cs
- ComponentChangingEvent.cs
- ServiceOperationParameter.cs
- WebPartMenuStyle.cs
- EntityDataSourceWrapperCollection.cs
- DbSource.cs
- IsolationInterop.cs
- UnmanagedMemoryStreamWrapper.cs
- WhereaboutsReader.cs
- DataTableExtensions.cs
- RuntimeIdentifierPropertyAttribute.cs
- DbModificationCommandTree.cs
- TemplatePropertyEntry.cs