Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- MetafileHeader.cs
- InputProviderSite.cs
- BinaryObjectReader.cs
- CryptoApi.cs
- Axis.cs
- PreDigestedSignedInfo.cs
- FontEmbeddingManager.cs
- AxHost.cs
- Label.cs
- WebHttpSecurityModeHelper.cs
- DocumentViewerAutomationPeer.cs
- DSASignatureDeformatter.cs
- InputBuffer.cs
- GeometryModel3D.cs
- TextEffect.cs
- NameValueFileSectionHandler.cs
- IMembershipProvider.cs
- AppPool.cs
- TraceContextEventArgs.cs
- ArraySubsetEnumerator.cs
- CacheAxisQuery.cs
- StringFormat.cs
- ReadOnlyActivityGlyph.cs
- XmlAnyAttributeAttribute.cs
- TypeHelper.cs
- WebEvents.cs
- DocumentPageHost.cs
- PageEventArgs.cs
- TypeUtil.cs
- ClientBuildManagerCallback.cs
- CharEntityEncoderFallback.cs
- Vector3DCollectionValueSerializer.cs
- JapaneseCalendar.cs
- DetailsViewDeleteEventArgs.cs
- TreeView.cs
- Thickness.cs
- SafeCancelMibChangeNotify.cs
- SplitContainer.cs
- HtmlHistory.cs
- SystemIcmpV4Statistics.cs
- ResolveDuplexCD1AsyncResult.cs
- TrustSection.cs
- QuerySelectOp.cs
- HasCopySemanticsAttribute.cs
- ServerReliableChannelBinder.cs
- ObjectDisposedException.cs
- ContentPathSegment.cs
- NetPeerTcpBinding.cs
- BaseTransportHeaders.cs
- PermissionListSet.cs
- StronglyTypedResourceBuilder.cs
- RegistryPermission.cs
- FrameworkElement.cs
- Helper.cs
- WithStatement.cs
- DataGridViewCellFormattingEventArgs.cs
- GenericPrincipal.cs
- codemethodreferenceexpression.cs
- CodeMethodInvokeExpression.cs
- PackWebRequestFactory.cs
- CriticalExceptions.cs
- EventToken.cs
- DataListCommandEventArgs.cs
- TrackingServices.cs
- NavigationCommands.cs
- XmlSchemaAny.cs
- PropertyEmitterBase.cs
- PeerApplicationLaunchInfo.cs
- EntitySetBase.cs
- AbsoluteQuery.cs
- OptimizerPatterns.cs
- SqlDataRecord.cs
- LayoutSettings.cs
- SwitchElementsCollection.cs
- DescendantQuery.cs
- RangeValuePattern.cs
- ValueUnavailableException.cs
- AnnotationComponentChooser.cs
- _BufferOffsetSize.cs
- DeferredReference.cs
- AssemblyAssociatedContentFileAttribute.cs
- MyContact.cs
- TypeNameConverter.cs
- ResolvedKeyFrameEntry.cs
- TransformerInfoCollection.cs
- WebPartZoneBase.cs
- ClientTargetCollection.cs
- RecipientIdentity.cs
- FileSecurity.cs
- AlternateView.cs
- Stroke2.cs
- CacheSection.cs
- NetTcpSecurity.cs
- MultilineStringEditor.cs
- PassportIdentity.cs
- PersonalizationDictionary.cs
- AutoGeneratedFieldProperties.cs
- AuthenticatedStream.cs
- ProcessRequestAsyncResult.cs
- DesignerTransaction.cs