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
- ImageProxy.cs
- GiveFeedbackEvent.cs
- DesignerOptionService.cs
- DbProviderConfigurationHandler.cs
- OleDbSchemaGuid.cs
- TimeStampChecker.cs
- MaterialGroup.cs
- KeyMatchBuilder.cs
- MemberAccessException.cs
- ErrorWrapper.cs
- TabRenderer.cs
- MenuBase.cs
- TemplatePropertyEntry.cs
- InlinedLocationReference.cs
- SynchronizationContext.cs
- SqlDependencyUtils.cs
- TextProviderWrapper.cs
- ListBoxItem.cs
- Matrix3DConverter.cs
- mediapermission.cs
- ReflectionPermission.cs
- VerbConverter.cs
- XPathDocument.cs
- StateInitialization.cs
- DataGridItemEventArgs.cs
- WasHostedComPlusFactory.cs
- HtmlSelect.cs
- VirtualPath.cs
- TextParaClient.cs
- LoaderAllocator.cs
- DbConvert.cs
- sqlstateclientmanager.cs
- SecurityNegotiationException.cs
- SecurityTokenParametersEnumerable.cs
- Timer.cs
- SizeLimitedCache.cs
- AnnotationElement.cs
- QuaternionAnimationBase.cs
- TypeRefElement.cs
- TitleStyle.cs
- ServerValidateEventArgs.cs
- InnerItemCollectionView.cs
- XpsResource.cs
- IIS7UserPrincipal.cs
- CatchBlock.cs
- SqlDataSourceStatusEventArgs.cs
- RadioButton.cs
- XmlEntity.cs
- WebPartConnection.cs
- FixUp.cs
- ThreadStateException.cs
- SpecularMaterial.cs
- FusionWrap.cs
- CodeExpressionStatement.cs
- BaseTemplateBuildProvider.cs
- RedistVersionInfo.cs
- FileNotFoundException.cs
- InputProviderSite.cs
- BulletedListEventArgs.cs
- MD5CryptoServiceProvider.cs
- SystemFonts.cs
- ScanQueryOperator.cs
- XmlSchemaComplexContentRestriction.cs
- HtmlContainerControl.cs
- FontSizeConverter.cs
- RangeValidator.cs
- SafeRightsManagementEnvironmentHandle.cs
- HelpInfo.cs
- BoundsDrawingContextWalker.cs
- StreamResourceInfo.cs
- Literal.cs
- smtpconnection.cs
- XmlSignatureManifest.cs
- ToolboxComponentsCreatingEventArgs.cs
- DbParameterCollectionHelper.cs
- EntitySqlQueryState.cs
- SoapExtensionImporter.cs
- DocumentViewer.cs
- DataGridViewRowPostPaintEventArgs.cs
- SourceCollection.cs
- WebControlToolBoxItem.cs
- ReliableInputConnection.cs
- SyndicationElementExtensionCollection.cs
- ScaleTransform.cs
- CellParaClient.cs
- DataTableNewRowEvent.cs
- HeaderFilter.cs
- ForeignKeyConstraint.cs
- DesignerSerializerAttribute.cs
- HtmlInputButton.cs
- MemoryMappedView.cs
- TreeViewImageKeyConverter.cs
- MsmqIntegrationSecurityElement.cs
- HtmlHead.cs
- ScriptingRoleServiceSection.cs
- ActiveXSite.cs
- StateDesigner.Layouts.cs
- XamlGridLengthSerializer.cs
- WhitespaceRuleLookup.cs
- BaseCAMarshaler.cs