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
- ExpressionPrefixAttribute.cs
- ResourceDescriptionAttribute.cs
- XmlException.cs
- Annotation.cs
- indexingfiltermarshaler.cs
- XmlBinaryWriterSession.cs
- ListViewDeletedEventArgs.cs
- Trigger.cs
- AdvancedBindingPropertyDescriptor.cs
- EdmTypeAttribute.cs
- AuthenticateEventArgs.cs
- AttributeExtensions.cs
- PathData.cs
- PageRanges.cs
- PrintController.cs
- CommandExpr.cs
- ChannelManager.cs
- CodeObject.cs
- ByteAnimation.cs
- ApplicationInfo.cs
- Int32CollectionConverter.cs
- SqlReorderer.cs
- PlaceHolder.cs
- sqlcontext.cs
- AssemblyInfo.cs
- IpcClientManager.cs
- XsdBuildProvider.cs
- ISAPIRuntime.cs
- XmlDownloadManager.cs
- Processor.cs
- ConnectionPointCookie.cs
- ExcCanonicalXml.cs
- XmlSchemaExporter.cs
- TrustManager.cs
- MulticastOption.cs
- SqlDataSourceCommandEventArgs.cs
- ToolStripItemCollection.cs
- PassportAuthentication.cs
- IriParsingElement.cs
- MethodCallTranslator.cs
- DataObjectEventArgs.cs
- TdsParserStateObject.cs
- Accessible.cs
- Win32.cs
- TypeConverterHelper.cs
- IgnoreFlushAndCloseStream.cs
- PolicyException.cs
- CompleteWizardStep.cs
- LinkConverter.cs
- IntSecurity.cs
- CodeSubDirectoriesCollection.cs
- GridViewUpdatedEventArgs.cs
- XPathSingletonIterator.cs
- CacheVirtualItemsEvent.cs
- ToolBarButtonClickEvent.cs
- SectionRecord.cs
- ExpressionEditor.cs
- StructuralType.cs
- PropertyToken.cs
- WebFormDesignerActionService.cs
- ExtensionCollection.cs
- XmlChildEnumerator.cs
- PropertyGridDesigner.cs
- BitmapCodecInfoInternal.cs
- ProcessModule.cs
- BuilderInfo.cs
- GetBrowserTokenRequest.cs
- Substitution.cs
- OdbcConnectionHandle.cs
- PrivilegeNotHeldException.cs
- SupportingTokenAuthenticatorSpecification.cs
- EntryIndex.cs
- EpmCustomContentSerializer.cs
- SqlXmlStorage.cs
- DataBoundControl.cs
- PropertyGeneratedEventArgs.cs
- MatrixTransform.cs
- HtmlLabelAdapter.cs
- LastQueryOperator.cs
- Drawing.cs
- FlowDecisionLabelFeature.cs
- Classification.cs
- MarkupObject.cs
- ThreadLocal.cs
- ControlLocalizer.cs
- ColorConvertedBitmapExtension.cs
- FieldNameLookup.cs
- Size3D.cs
- CommandTreeTypeHelper.cs
- SkipQueryOptionExpression.cs
- TextElementCollectionHelper.cs
- ListViewSelectEventArgs.cs
- BaseHashHelper.cs
- SimpleBitVector32.cs
- XmlElementAttribute.cs
- WebPartExportVerb.cs
- ACE.cs
- backend.cs
- ComNativeDescriptor.cs
- ModelUIElement3D.cs