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
- SpeechDetectedEventArgs.cs
- DefaultValueConverter.cs
- SiteMapNodeItemEventArgs.cs
- SqlConnectionFactory.cs
- DesignerPerfEventProvider.cs
- UIElement.cs
- AnonymousIdentificationSection.cs
- FrugalMap.cs
- SymmetricAlgorithm.cs
- ActiveXHelper.cs
- CheckedListBox.cs
- ErrorHandlerModule.cs
- ChtmlSelectionListAdapter.cs
- NameTable.cs
- AccessControlEntry.cs
- DataObjectSettingDataEventArgs.cs
- SizeConverter.cs
- VersionedStream.cs
- Tuple.cs
- DataKey.cs
- PointCollection.cs
- ArgumentNullException.cs
- SortDescription.cs
- DashStyles.cs
- SweepDirectionValidation.cs
- ExponentialEase.cs
- SqlBinder.cs
- TableItemStyle.cs
- BorderGapMaskConverter.cs
- Error.cs
- DBSqlParser.cs
- VirtualPath.cs
- ContactManager.cs
- SecurityTimestamp.cs
- FileDialog.cs
- XmlBinaryReaderSession.cs
- SiteMapPath.cs
- SqlConnectionString.cs
- SmtpReplyReader.cs
- Pens.cs
- ReaderContextStackData.cs
- EncoderNLS.cs
- PreApplicationStartMethodAttribute.cs
- ClrProviderManifest.cs
- FixedSOMContainer.cs
- OrderedDictionaryStateHelper.cs
- SynchronizationFilter.cs
- CodeAccessPermission.cs
- FixedTextPointer.cs
- DrawingGroup.cs
- SqlUDTStorage.cs
- _OverlappedAsyncResult.cs
- XpsResourceDictionary.cs
- LinqDataSource.cs
- WebControlToolBoxItem.cs
- CodeTypeConstructor.cs
- DataControlCommands.cs
- NumericExpr.cs
- SafeTimerHandle.cs
- Attributes.cs
- EventArgs.cs
- ScaleTransform.cs
- PropertySet.cs
- Adorner.cs
- SmiConnection.cs
- ThreadExceptionDialog.cs
- ToolStripStatusLabel.cs
- MemberBinding.cs
- DataGridLength.cs
- DeviceContext2.cs
- AsymmetricKeyExchangeFormatter.cs
- EdmConstants.cs
- TableItemPattern.cs
- HttpPostProtocolReflector.cs
- GeometryDrawing.cs
- DecimalMinMaxAggregationOperator.cs
- SingleAnimationBase.cs
- SQLMoneyStorage.cs
- TextServicesPropertyRanges.cs
- TextServicesLoader.cs
- SerializationException.cs
- TaskHelper.cs
- XmlDataImplementation.cs
- FaultConverter.cs
- Calendar.cs
- Parameter.cs
- TreeNodeCollection.cs
- TdsParserStateObject.cs
- SafeSerializationManager.cs
- SystemIPv6InterfaceProperties.cs
- Misc.cs
- BooleanFunctions.cs
- SqlComparer.cs
- EdmToObjectNamespaceMap.cs
- DelegateOutArgument.cs
- ContentIterators.cs
- LookupNode.cs
- ToolStripDropDownClosedEventArgs.cs
- LinearKeyFrames.cs
- XmlReturnReader.cs