Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DLinq / Dlinq / SqlClient / Query / ContainsRowNumberChecker.cs / 1305376 / 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
- HandoffBehavior.cs
- BuildTopDownAttribute.cs
- ChooseAction.cs
- ImpersonationOption.cs
- StringValueConverter.cs
- TrackingCondition.cs
- MemberExpression.cs
- SapiAttributeParser.cs
- Registry.cs
- M3DUtil.cs
- WindowCollection.cs
- WebResponse.cs
- Table.cs
- TableLayoutSettingsTypeConverter.cs
- BindingList.cs
- InternalUserCancelledException.cs
- PrintDialogException.cs
- PathFigureCollection.cs
- TypeLoadException.cs
- InteropBitmapSource.cs
- DataKeyArray.cs
- FixedElement.cs
- If.cs
- Blend.cs
- ProfileSettings.cs
- MenuStrip.cs
- ThumbAutomationPeer.cs
- GroupItem.cs
- LineServices.cs
- UpDownEvent.cs
- XPathDocument.cs
- XmlBinaryReaderSession.cs
- BasicKeyConstraint.cs
- ReliableSessionBindingElementImporter.cs
- ConfigXmlDocument.cs
- ZipIOModeEnforcingStream.cs
- RegistryPermission.cs
- WebPartTracker.cs
- HttpWebRequestElement.cs
- ControlParameter.cs
- InternalTransaction.cs
- XmlHelper.cs
- Point.cs
- DataServiceRequestException.cs
- EdmTypeAttribute.cs
- HierarchicalDataBoundControl.cs
- Trace.cs
- QuadraticBezierSegment.cs
- ConcatQueryOperator.cs
- TranslateTransform3D.cs
- SessionSwitchEventArgs.cs
- LowerCaseStringConverter.cs
- Pkcs9Attribute.cs
- OracleParameterCollection.cs
- InputProviderSite.cs
- PhoneCallDesigner.cs
- Convert.cs
- TimeoutHelper.cs
- DependencyObject.cs
- GroupStyle.cs
- XmlEnumAttribute.cs
- OracleParameter.cs
- HttpModule.cs
- SqlProfileProvider.cs
- SecurityTokenAuthenticator.cs
- ImageAutomationPeer.cs
- ArglessEventHandlerProxy.cs
- ImportContext.cs
- SoapHeaderException.cs
- Axis.cs
- SiteMembershipCondition.cs
- ICspAsymmetricAlgorithm.cs
- ThreadAbortException.cs
- EventDescriptorCollection.cs
- FontEmbeddingManager.cs
- ProxyElement.cs
- ContentValidator.cs
- ListViewDeleteEventArgs.cs
- ToolStripContentPanel.cs
- DbConnectionHelper.cs
- Polygon.cs
- ExtensionDataReader.cs
- SqlInfoMessageEvent.cs
- EventHandlersDesigner.cs
- PenThread.cs
- DataBindingsDialog.cs
- RequestQueue.cs
- DocumentViewerBase.cs
- ListBoxItemAutomationPeer.cs
- FixedSOMElement.cs
- StateManagedCollection.cs
- QueryStack.cs
- LinearGradientBrush.cs
- TargetConverter.cs
- ResourcesBuildProvider.cs
- HttpVersion.cs
- TextBoxAutoCompleteSourceConverter.cs
- httpstaticobjectscollection.cs
- IsolatedStorageFileStream.cs
- _BufferOffsetSize.cs