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
- ButtonAutomationPeer.cs
- LinearKeyFrames.cs
- SqlDataSourceConfigureFilterForm.cs
- DeploymentSection.cs
- WizardStepBase.cs
- MetabaseServerConfig.cs
- TextTreeRootNode.cs
- BrowserCapabilitiesFactory.cs
- ELinqQueryState.cs
- ProtocolsConfigurationEntry.cs
- XmlTextReader.cs
- OracleConnection.cs
- UnauthorizedAccessException.cs
- ProfileServiceManager.cs
- ExpressionVisitor.cs
- ellipse.cs
- EncodingTable.cs
- ObjectParameterCollection.cs
- SQLUtility.cs
- OperationFormatStyle.cs
- DataTableCollection.cs
- Cursors.cs
- PolicyVersion.cs
- EntityDataSourceContainerNameItem.cs
- Interlocked.cs
- SmtpNegotiateAuthenticationModule.cs
- EmptyEnumerable.cs
- EmbossBitmapEffect.cs
- AdRotatorDesigner.cs
- TemplateXamlParser.cs
- FileAuthorizationModule.cs
- SystemIPInterfaceProperties.cs
- PerspectiveCamera.cs
- BuildResultCache.cs
- ToolStripMenuItemDesigner.cs
- BaseComponentEditor.cs
- GroupDescription.cs
- NativeMethods.cs
- HorizontalAlignConverter.cs
- XamlFigureLengthSerializer.cs
- GraphicsPathIterator.cs
- ColorConvertedBitmapExtension.cs
- PriorityBinding.cs
- FixedSOMGroup.cs
- XmlEntityReference.cs
- ToolStrip.cs
- XmlAttributes.cs
- UnknownWrapper.cs
- DebuggerAttributes.cs
- RSACryptoServiceProvider.cs
- XMLUtil.cs
- PackageRelationshipSelector.cs
- MemberMaps.cs
- MappingSource.cs
- TemplateNameScope.cs
- _TransmitFileOverlappedAsyncResult.cs
- WindowsTokenRoleProvider.cs
- LayoutManager.cs
- GregorianCalendarHelper.cs
- BatchServiceHost.cs
- Stack.cs
- ManifestResourceInfo.cs
- RoleBoolean.cs
- ChangePasswordAutoFormat.cs
- ConnectionPoint.cs
- HttpServerUtilityBase.cs
- TextBoxDesigner.cs
- Point4D.cs
- ImplicitInputBrush.cs
- DataGridViewCheckBoxCell.cs
- CurrencyWrapper.cs
- WebPartEditorApplyVerb.cs
- CrossSiteScriptingValidation.cs
- Merger.cs
- DynamicExpression.cs
- ButtonFlatAdapter.cs
- TextBox.cs
- ObjectAnimationUsingKeyFrames.cs
- Attribute.cs
- HashSetDebugView.cs
- LicFileLicenseProvider.cs
- diagnosticsswitches.cs
- TargetInvocationException.cs
- OracleConnection.cs
- DataGridState.cs
- TempFiles.cs
- BitmapSource.cs
- SynchronizedChannelCollection.cs
- InkCanvasInnerCanvas.cs
- DesignerTransaction.cs
- FileChangesMonitor.cs
- MemberJoinTreeNode.cs
- GlyphRunDrawing.cs
- ObsoleteAttribute.cs
- HttpCachePolicyElement.cs
- TextTreeTextBlock.cs
- _FtpControlStream.cs
- XslVisitor.cs
- CommandValueSerializer.cs
- WebConfigurationHost.cs