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
- ScriptMethodAttribute.cs
- CodeSnippetTypeMember.cs
- SvcMapFileLoader.cs
- XmlIterators.cs
- GlyphInfoList.cs
- Function.cs
- InternalConfirm.cs
- Function.cs
- ColorInterpolationModeValidation.cs
- TabControlEvent.cs
- LineBreakRecord.cs
- TdsParserStateObject.cs
- TextServicesLoader.cs
- ScriptReferenceEventArgs.cs
- InlinedLocationReference.cs
- CodeGenerator.cs
- TextMetrics.cs
- GradientStop.cs
- InkCanvasSelectionAdorner.cs
- ThrowHelper.cs
- X509Utils.cs
- GradientBrush.cs
- ApplicationManager.cs
- IgnoreFileBuildProvider.cs
- DocumentViewerConstants.cs
- ProxyWebPartConnectionCollection.cs
- MemberInfoSerializationHolder.cs
- Stylus.cs
- SignatureDescription.cs
- DesignBindingConverter.cs
- ADConnectionHelper.cs
- KeyGestureConverter.cs
- AddingNewEventArgs.cs
- XPathSelfQuery.cs
- NonClientArea.cs
- ContentTypeSettingDispatchMessageFormatter.cs
- ErrorStyle.cs
- NumberFormatter.cs
- DuplicateWaitObjectException.cs
- TypeListConverter.cs
- TriState.cs
- ZipPackage.cs
- IIS7UserPrincipal.cs
- FontDriver.cs
- WebPartManagerInternals.cs
- PolyQuadraticBezierSegment.cs
- ProxyHwnd.cs
- PointF.cs
- PackWebRequest.cs
- ResourceContainer.cs
- AutomationElementIdentifiers.cs
- AuthorizationRule.cs
- ComponentChangedEvent.cs
- XmlSchemaAttributeGroupRef.cs
- MappedMetaModel.cs
- _UncName.cs
- HttpCachePolicyElement.cs
- CompilerScope.cs
- ConsoleTraceListener.cs
- CapabilitiesUse.cs
- ConfigXmlText.cs
- XamlVector3DCollectionSerializer.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- ReferencedCollectionType.cs
- ExecutedRoutedEventArgs.cs
- TextWriterEngine.cs
- WpfKnownMember.cs
- BitVector32.cs
- TemplateInstanceAttribute.cs
- ArgumentValue.cs
- DbConnectionStringCommon.cs
- Annotation.cs
- ScopelessEnumAttribute.cs
- LoginUtil.cs
- PersistenceTypeAttribute.cs
- CodeBinaryOperatorExpression.cs
- ToolStripItem.cs
- MeshGeometry3D.cs
- LifetimeServices.cs
- ProfilePropertyMetadata.cs
- ParentUndoUnit.cs
- DataControlLinkButton.cs
- HMACSHA1.cs
- CheckBox.cs
- ExceptionHandlers.cs
- TemplateBuilder.cs
- KnownBoxes.cs
- SmtpReplyReaderFactory.cs
- recordstatescratchpad.cs
- ProcessModule.cs
- Configuration.cs
- FixedDocumentPaginator.cs
- GetWorkflowTree.cs
- TransactionFlowProperty.cs
- HitTestParameters.cs
- ColorTranslator.cs
- ALinqExpressionVisitor.cs
- TableLayoutCellPaintEventArgs.cs
- COM2PropertyBuilderUITypeEditor.cs
- Graphics.cs