Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataMember.cs
- TabControlEvent.cs
- COM2ColorConverter.cs
- ImportContext.cs
- DispatcherEventArgs.cs
- entitydatasourceentitysetnameconverter.cs
- RelationshipManager.cs
- validationstate.cs
- MouseEvent.cs
- errorpatternmatcher.cs
- DesigntimeLicenseContext.cs
- WorkflowDefinitionDispenser.cs
- AutomationPeer.cs
- _SslState.cs
- WaveHeader.cs
- GifBitmapDecoder.cs
- HtmlTable.cs
- SchemaImporterExtensionsSection.cs
- SequenceDesignerAccessibleObject.cs
- DesignerVerbCollection.cs
- Keyboard.cs
- IsolatedStorageFileStream.cs
- DataPagerField.cs
- HostedTransportConfigurationManager.cs
- DispatcherEventArgs.cs
- ErrorProvider.cs
- NavigationProperty.cs
- SelectionEditor.cs
- TTSEngineTypes.cs
- GuidelineCollection.cs
- XsltException.cs
- SqlStatistics.cs
- StatementContext.cs
- OracleConnection.cs
- EncryptedData.cs
- WorkerRequest.cs
- List.cs
- WebControlsSection.cs
- MD5.cs
- GeometryModel3D.cs
- ErrorStyle.cs
- BindToObject.cs
- DetailsViewDeleteEventArgs.cs
- ModelTreeEnumerator.cs
- Stream.cs
- SqlUtils.cs
- XhtmlBasicTextViewAdapter.cs
- ValidateNames.cs
- XmlSchemaAttribute.cs
- PersistencePipeline.cs
- SafeMarshalContext.cs
- WebBrowsableAttribute.cs
- IsolatedStoragePermission.cs
- GraphicsContext.cs
- SchemaElementDecl.cs
- FactoryId.cs
- RequestCache.cs
- DbConnectionPoolIdentity.cs
- CommandSet.cs
- Win32.cs
- SystemDiagnosticsSection.cs
- HandlerBase.cs
- WindowsTab.cs
- PageBorderless.cs
- XmlSerializationReader.cs
- Track.cs
- Parameter.cs
- SerializationInfo.cs
- DataGridDesigner.cs
- BlurBitmapEffect.cs
- ServiceOperationWrapper.cs
- ADConnectionHelper.cs
- RegexWorker.cs
- TextOutput.cs
- ExceptionAggregator.cs
- X509SubjectKeyIdentifierClause.cs
- Asn1IntegerConverter.cs
- Image.cs
- TraceUtils.cs
- ScrollPatternIdentifiers.cs
- TypeGeneratedEventArgs.cs
- DataConnectionHelper.cs
- WizardPanelChangingEventArgs.cs
- pingexception.cs
- FullTextLine.cs
- HMACMD5.cs
- PassportAuthentication.cs
- SimpleWebHandlerParser.cs
- FontEditor.cs
- PageAsyncTask.cs
- NativeMethods.cs
- WhitespaceRuleReader.cs
- SecurityException.cs
- AsymmetricKeyExchangeFormatter.cs
- ExtentKey.cs
- StrokeCollectionConverter.cs
- LoginCancelEventArgs.cs
- PersonalizableTypeEntry.cs
- PartialCachingAttribute.cs
- SqlWebEventProvider.cs