Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DLinq / Dlinq / SqlClient / Query / ContainsRowNumberChecker.cs / 1305376 / 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
- WebPartDeleteVerb.cs
- _MultipleConnectAsync.cs
- ExpressionEditorAttribute.cs
- TextEditorMouse.cs
- Cloud.cs
- ClientSettings.cs
- Crc32.cs
- SqlTypesSchemaImporter.cs
- LocatorBase.cs
- SiteMapNode.cs
- DataGridViewColumnHeaderCell.cs
- BinHexEncoder.cs
- OneOfElement.cs
- XmlSchemaAppInfo.cs
- HandlerMappingMemo.cs
- _emptywebproxy.cs
- X509Certificate2Collection.cs
- ContentAlignmentEditor.cs
- SetState.cs
- AppSettingsExpressionBuilder.cs
- WebEncodingValidator.cs
- URI.cs
- Expander.cs
- DocumentOrderComparer.cs
- TextSpanModifier.cs
- EdmProperty.cs
- URLAttribute.cs
- ConfigurationCollectionAttribute.cs
- InstanceOwnerQueryResult.cs
- ThreadSafeList.cs
- DateTimeStorage.cs
- ValidationError.cs
- BitmapInitialize.cs
- Imaging.cs
- Context.cs
- EncryptedReference.cs
- SchemaInfo.cs
- InvalidFilterCriteriaException.cs
- IResourceProvider.cs
- BrowserTree.cs
- SafeMILHandle.cs
- DbDataReader.cs
- StrokeFIndices.cs
- CatalogZone.cs
- X509ChainPolicy.cs
- HorizontalAlignConverter.cs
- OutOfProcStateClientManager.cs
- NameSpaceEvent.cs
- ImageSourceValueSerializer.cs
- ToolStripDropTargetManager.cs
- XPathParser.cs
- StreamUpdate.cs
- SystemMulticastIPAddressInformation.cs
- TimelineGroup.cs
- AnnotationResourceChangedEventArgs.cs
- CFStream.cs
- MutexSecurity.cs
- UITypeEditor.cs
- Rect.cs
- UnsafeNativeMethods.cs
- TargetInvocationException.cs
- PEFileReader.cs
- WindowsSysHeader.cs
- UriParserTemplates.cs
- ImageBrush.cs
- MethodInfo.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- EdmEntityTypeAttribute.cs
- EditableLabelControl.cs
- BoundColumn.cs
- ActivationServices.cs
- CollectionsUtil.cs
- ObjectParameter.cs
- SpellerError.cs
- AuthenticationConfig.cs
- TraceLog.cs
- CredentialCache.cs
- DataColumnMappingCollection.cs
- Win32.cs
- ConditionValidator.cs
- CngAlgorithm.cs
- ThicknessAnimation.cs
- DataObjectFieldAttribute.cs
- TextHidden.cs
- PropertyMap.cs
- ListDependantCardsRequest.cs
- PcmConverter.cs
- KerberosRequestorSecurityToken.cs
- User.cs
- PenCursorManager.cs
- ParseElement.cs
- CodeIdentifier.cs
- SamlAuthorizationDecisionStatement.cs
- TailCallAnalyzer.cs
- Tracer.cs
- Registry.cs
- DeferredElementTreeState.cs
- NameTable.cs
- WindowsFormsHostPropertyMap.cs
- CheckBoxField.cs