Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- Maps.cs
- RemotingAttributes.cs
- RoleGroupCollection.cs
- PixelShader.cs
- HashRepartitionStream.cs
- EditingCoordinator.cs
- URL.cs
- ListBoxAutomationPeer.cs
- HierarchicalDataBoundControlAdapter.cs
- QueryOutputWriter.cs
- RuntimeIdentifierPropertyAttribute.cs
- DataRelationPropertyDescriptor.cs
- Number.cs
- FixedStringLookup.cs
- ADConnectionHelper.cs
- ProcessModelInfo.cs
- assemblycache.cs
- EdmComplexPropertyAttribute.cs
- Component.cs
- SmtpMail.cs
- RegexNode.cs
- RichTextBox.cs
- WinFormsSpinner.cs
- AppSettingsReader.cs
- _SslSessionsCache.cs
- WasAdminWrapper.cs
- MemberExpression.cs
- sqlstateclientmanager.cs
- BaseCollection.cs
- DocumentPage.cs
- OdbcConnectionStringbuilder.cs
- LogicalTreeHelper.cs
- NativeRecognizer.cs
- BrowserCapabilitiesFactoryBase.cs
- CheckBoxPopupAdapter.cs
- SafeNativeMethods.cs
- GraphicsPath.cs
- UrlPropertyAttribute.cs
- NamedPipeHostedTransportConfiguration.cs
- KeyConverter.cs
- LinqDataView.cs
- ChannelSinkStacks.cs
- RuntimeEnvironment.cs
- SelectionProcessor.cs
- MetadataConversionError.cs
- WeakEventTable.cs
- Slider.cs
- EmptyControlCollection.cs
- RecordManager.cs
- PropertyEntry.cs
- WebUtil.cs
- httpserverutility.cs
- KeyGestureConverter.cs
- PointF.cs
- XamlFilter.cs
- IndicCharClassifier.cs
- EnumType.cs
- SuppressIldasmAttribute.cs
- ControlIdConverter.cs
- ModelFactory.cs
- HyperLinkColumn.cs
- HandlerFactoryWrapper.cs
- BindingOperations.cs
- CodeCatchClause.cs
- StylusPointProperty.cs
- LayoutUtils.cs
- TargetException.cs
- MSHTMLHostUtil.cs
- Rotation3DKeyFrameCollection.cs
- PolicyStatement.cs
- SingleConverter.cs
- Propagator.JoinPropagator.cs
- Matrix.cs
- ItemCheckEvent.cs
- Label.cs
- IssuedTokensHeader.cs
- ImageField.cs
- ReliableSessionElement.cs
- AutomationAttributeInfo.cs
- UIElement3D.cs
- BoundingRectTracker.cs
- UserUseLicenseDictionaryLoader.cs
- SqlError.cs
- TaiwanCalendar.cs
- QueryCursorEventArgs.cs
- TrackBar.cs
- CqlLexer.cs
- BaseTemplateCodeDomTreeGenerator.cs
- RegularExpressionValidator.cs
- GB18030Encoding.cs
- ExpressionContext.cs
- CacheSection.cs
- EngineSite.cs
- IISMapPath.cs
- AppDomainGrammarProxy.cs
- StrokeNodeOperations2.cs
- WindowsTooltip.cs
- SerializationException.cs
- SessionStateContainer.cs
- IPEndPoint.cs