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 / 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
- TreeNodeBindingCollection.cs
- ValidateNames.cs
- XmlComplianceUtil.cs
- Baml2006ReaderFrame.cs
- SettingsBase.cs
- ObjectListCommand.cs
- COMException.cs
- Viewport3DAutomationPeer.cs
- DateTimeOffsetConverter.cs
- UIntPtr.cs
- HtmlLabelAdapter.cs
- XmlSchemaObjectTable.cs
- WhitespaceRuleReader.cs
- XmlDomTextWriter.cs
- DataKeyCollection.cs
- ObjectListCommandsPage.cs
- EntityDataSourceValidationException.cs
- ObjectContextServiceProvider.cs
- ResumeStoryboard.cs
- CreateUserWizard.cs
- ProfileGroupSettingsCollection.cs
- XmlUtilWriter.cs
- prompt.cs
- AbandonedMutexException.cs
- ClickablePoint.cs
- EventEntry.cs
- GcHandle.cs
- TransactionManager.cs
- ClrProviderManifest.cs
- SelectionEditor.cs
- RoutedEvent.cs
- XPathNodeList.cs
- ListViewUpdatedEventArgs.cs
- QilBinary.cs
- ClientUriBehavior.cs
- EntityDataSourceQueryBuilder.cs
- Brush.cs
- Missing.cs
- HostingMessageProperty.cs
- FormClosingEvent.cs
- SqlInternalConnectionSmi.cs
- CodeMethodReturnStatement.cs
- BuildResultCache.cs
- ElementProxy.cs
- IdentityElement.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- columnmapfactory.cs
- DataObjectMethodAttribute.cs
- HttpHostedTransportConfiguration.cs
- SourceFilter.cs
- mda.cs
- BookmarkEventArgs.cs
- DataObjectEventArgs.cs
- Wildcard.cs
- SetIndexBinder.cs
- CellParagraph.cs
- SchemaNamespaceManager.cs
- DecodeHelper.cs
- SQLDoubleStorage.cs
- ColumnHeaderConverter.cs
- TextLineResult.cs
- WindowsGraphics.cs
- CapabilitiesState.cs
- DesignerActionGlyph.cs
- TraceRecord.cs
- TextBox.cs
- Oid.cs
- CfgRule.cs
- SqlDataSourceQueryEditorForm.cs
- VectorAnimationBase.cs
- odbcmetadatacollectionnames.cs
- NotificationContext.cs
- EnumBuilder.cs
- ConnectionString.cs
- RegistryKey.cs
- WindowsSolidBrush.cs
- ExtensionQuery.cs
- OLEDB_Enum.cs
- FormViewUpdatedEventArgs.cs
- FileNameEditor.cs
- ApplyTemplatesAction.cs
- TextTreeUndo.cs
- SqlWorkflowPersistenceService.cs
- CodeRegionDirective.cs
- ConsoleEntryPoint.cs
- MeshGeometry3D.cs
- TemplateModeChangedEventArgs.cs
- HeaderUtility.cs
- Rotation3DAnimationUsingKeyFrames.cs
- TouchesOverProperty.cs
- PolyLineSegment.cs
- DragEvent.cs
- SelectionRangeConverter.cs
- ObjectConverter.cs
- SafeFileMappingHandle.cs
- ContractSearchPattern.cs
- WebPartAuthorizationEventArgs.cs
- BitmapCodecInfo.cs
- XmlChoiceIdentifierAttribute.cs
- ArrayHelper.cs