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
- AnnotationAdorner.cs
- DbConnectionPoolOptions.cs
- TagPrefixCollection.cs
- CaretElement.cs
- EntityStoreSchemaFilterEntry.cs
- SqlConnectionString.cs
- MaskInputRejectedEventArgs.cs
- FixedNode.cs
- DesignSurface.cs
- RequestQueue.cs
- EntityException.cs
- ProcessHostConfigUtils.cs
- ClientTarget.cs
- SelectionRangeConverter.cs
- DirectionalLight.cs
- LayoutInformation.cs
- TransformCollection.cs
- DataGridPageChangedEventArgs.cs
- CreateUserErrorEventArgs.cs
- TimeSpanOrInfiniteConverter.cs
- AssemblyAssociatedContentFileAttribute.cs
- HighlightComponent.cs
- CompiledELinqQueryState.cs
- EmbeddedMailObject.cs
- GridViewCommandEventArgs.cs
- WebPartAuthorizationEventArgs.cs
- SQLGuidStorage.cs
- Misc.cs
- CompoundFileDeflateTransform.cs
- FrameworkElement.cs
- BitFlagsGenerator.cs
- CodeIdentifier.cs
- XpsException.cs
- PageThemeBuildProvider.cs
- RowToParametersTransformer.cs
- SecurityPermission.cs
- ByValueEqualityComparer.cs
- SQLDecimalStorage.cs
- GridViewColumnHeaderAutomationPeer.cs
- DynamicILGenerator.cs
- ProgressBarRenderer.cs
- SocketAddress.cs
- SeparatorAutomationPeer.cs
- UniqueIdentifierService.cs
- _BasicClient.cs
- Int32Rect.cs
- XmlImplementation.cs
- CodeRegionDirective.cs
- UserInitiatedNavigationPermission.cs
- DataGridView.cs
- ValidatedControlConverter.cs
- ContainerControlDesigner.cs
- DbSetClause.cs
- Label.cs
- FormViewDeleteEventArgs.cs
- arclist.cs
- ApplicationServiceManager.cs
- PointIndependentAnimationStorage.cs
- VisualStyleElement.cs
- RuntimeWrappedException.cs
- SchemaCollectionCompiler.cs
- ReadOnlyAttribute.cs
- QueryContinueDragEventArgs.cs
- SqlError.cs
- MenuItemBinding.cs
- OperationBehaviorAttribute.cs
- FontSource.cs
- PolyLineSegmentFigureLogic.cs
- TemplateKeyConverter.cs
- DataGridViewColumnDesignTimeVisibleAttribute.cs
- WebPartEditVerb.cs
- SqlRowUpdatingEvent.cs
- SpeakInfo.cs
- UITypeEditor.cs
- AxDesigner.cs
- ModelTypeConverter.cs
- Screen.cs
- CultureSpecificStringDictionary.cs
- DesignerActionVerbList.cs
- BitmapPalette.cs
- IssuedTokenServiceElement.cs
- hwndwrapper.cs
- AdapterSwitches.cs
- SendMailErrorEventArgs.cs
- SoundPlayerAction.cs
- ExpressionLink.cs
- SecureStringHasher.cs
- CustomGrammar.cs
- StaticFileHandler.cs
- CatalogPartCollection.cs
- ScrollViewer.cs
- SelectorAutomationPeer.cs
- UniqueEventHelper.cs
- ScrollEvent.cs
- ToolStripSeparatorRenderEventArgs.cs
- Metafile.cs
- WorkflowMarkupSerializationManager.cs
- UpDownBase.cs
- SafeProcessHandle.cs
- Rectangle.cs