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
- EdmPropertyAttribute.cs
- FontResourceCache.cs
- XPathChildIterator.cs
- FormsAuthentication.cs
- PageCodeDomTreeGenerator.cs
- XPathExpr.cs
- UniformGrid.cs
- MetaModel.cs
- DropTarget.cs
- XmlSecureResolver.cs
- _ConnectStream.cs
- TouchFrameEventArgs.cs
- RegexWorker.cs
- TagMapInfo.cs
- DataObjectFieldAttribute.cs
- ErrorStyle.cs
- PrefixQName.cs
- SqlConnectionHelper.cs
- ConfigXmlText.cs
- OdbcHandle.cs
- DataGridViewColumnConverter.cs
- StringConcat.cs
- ActivityValidator.cs
- TemplateParser.cs
- BrowsableAttribute.cs
- OpenTypeMethods.cs
- HtmlControlPersistable.cs
- XmlSchemaNotation.cs
- SqlDesignerDataSourceView.cs
- StackOverflowException.cs
- DiscoveryReferences.cs
- DataServiceProcessingPipelineEventArgs.cs
- GC.cs
- ToolCreatedEventArgs.cs
- Int64KeyFrameCollection.cs
- KnownTypesProvider.cs
- Converter.cs
- PlanCompiler.cs
- UrlPath.cs
- QilXmlWriter.cs
- GeometryGroup.cs
- ExpressionBuilderCollection.cs
- ListView.cs
- StoryFragments.cs
- DbConnectionPoolGroupProviderInfo.cs
- RegexWorker.cs
- XsltSettings.cs
- DataColumn.cs
- _UriSyntax.cs
- HTMLTextWriter.cs
- SchemaAttDef.cs
- XmlSchemaSimpleContent.cs
- PrinterResolution.cs
- OutputCacheModule.cs
- SchemaConstraints.cs
- ModelFunction.cs
- PerformanceCounterPermissionEntryCollection.cs
- _SafeNetHandles.cs
- DataSetSchema.cs
- ListParaClient.cs
- UserControl.cs
- KnowledgeBase.cs
- DllNotFoundException.cs
- BindingValueChangedEventArgs.cs
- ScriptDescriptor.cs
- DataPagerFieldCommandEventArgs.cs
- ActiveXMessageFormatter.cs
- GlobalProxySelection.cs
- ImmComposition.cs
- SrgsRuleRef.cs
- PageHandlerFactory.cs
- RestrictedTransactionalPackage.cs
- IIS7UserPrincipal.cs
- XmlSortKey.cs
- ToolStripItemCollection.cs
- SiteIdentityPermission.cs
- IsolatedStorageSecurityState.cs
- LineBreak.cs
- AutomationElementCollection.cs
- ConnectionPoolManager.cs
- TransformerInfo.cs
- MobileControlBuilder.cs
- FocusWithinProperty.cs
- SemaphoreSecurity.cs
- EnumValidator.cs
- ClientBuildManager.cs
- ApplicationDirectory.cs
- __Filters.cs
- DbConnectionPoolCounters.cs
- ContractMapping.cs
- OperationParameterInfo.cs
- EventWaitHandleSecurity.cs
- CardSpaceSelector.cs
- WebPartCloseVerb.cs
- WebAdminConfigurationHelper.cs
- DiscoveryServerProtocol.cs
- EntityDataSourceValidationException.cs
- ProvidePropertyAttribute.cs
- Effect.cs
- FillErrorEventArgs.cs