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
- ComboBoxItem.cs
- ConfigurationPropertyAttribute.cs
- JoinQueryOperator.cs
- DoubleAnimationClockResource.cs
- ActivityDelegate.cs
- CachedFontFace.cs
- ScrollBarRenderer.cs
- XmlNamespaceDeclarationsAttribute.cs
- DataGridViewCellCancelEventArgs.cs
- GridViewRowEventArgs.cs
- AndCondition.cs
- MostlySingletonList.cs
- CompilerGeneratedAttribute.cs
- NumberFunctions.cs
- Random.cs
- TreeView.cs
- VirtualDirectoryMapping.cs
- NextPreviousPagerField.cs
- ZipIOExtraFieldZip64Element.cs
- ColumnResult.cs
- SkipQueryOptionExpression.cs
- Serializer.cs
- SelectionBorderGlyph.cs
- QilPatternFactory.cs
- TypeConverterHelper.cs
- SupportsEventValidationAttribute.cs
- TextChangedEventArgs.cs
- TriggerCollection.cs
- SmiConnection.cs
- ExcludePathInfo.cs
- Int16KeyFrameCollection.cs
- FormsIdentity.cs
- OletxResourceManager.cs
- HttpDictionary.cs
- DependencyObject.cs
- ItemDragEvent.cs
- WebServiceErrorEvent.cs
- CatalogPart.cs
- XhtmlConformanceSection.cs
- ConfigurationLocation.cs
- HttpListenerException.cs
- CodeAccessPermission.cs
- MetabaseSettingsIis7.cs
- ClientRolePrincipal.cs
- BoolExpressionVisitors.cs
- SqlNodeAnnotations.cs
- Events.cs
- EdmComplexPropertyAttribute.cs
- CollectionViewGroupRoot.cs
- TagPrefixCollection.cs
- CodeCommentStatement.cs
- ControlTemplate.cs
- ProjectionPruner.cs
- ResolveCriteriaApril2005.cs
- ExtensionQuery.cs
- WebPartMenu.cs
- NavigationWindowAutomationPeer.cs
- SHA1.cs
- DataObjectAttribute.cs
- PopupRoot.cs
- PropertyChange.cs
- ColumnHeader.cs
- DictionaryChange.cs
- LabelAutomationPeer.cs
- __ComObject.cs
- SystemTcpConnection.cs
- ComponentResourceKey.cs
- CachedFontFamily.cs
- SQLDecimalStorage.cs
- OdbcConnectionOpen.cs
- DefaultAsyncDataDispatcher.cs
- AssociationSetMetadata.cs
- HiddenFieldPageStatePersister.cs
- IdentityReference.cs
- ResourceDefaultValueAttribute.cs
- CategoryNameCollection.cs
- XsltArgumentList.cs
- HuffCodec.cs
- ObjectToIdCache.cs
- IntranetCredentialPolicy.cs
- ApplicationProxyInternal.cs
- XmlReflectionMember.cs
- MsmqReceiveParameters.cs
- _HeaderInfoTable.cs
- HtmlSelect.cs
- ColumnHeaderConverter.cs
- ScriptBehaviorDescriptor.cs
- TdsParserHelperClasses.cs
- BooleanFunctions.cs
- Blend.cs
- BitArray.cs
- WindowsFormsHostAutomationPeer.cs
- IpcChannel.cs
- DataGridCellClipboardEventArgs.cs
- PackageFilter.cs
- StylusPoint.cs
- RectAnimationBase.cs
- BuildResultCache.cs
- Span.cs
- WindowPatternIdentifiers.cs