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
- ReceiveContent.cs
- VisualTarget.cs
- ParseNumbers.cs
- StateManagedCollection.cs
- DataGridViewButtonColumn.cs
- Int32RectConverter.cs
- IsolatedStorageFileStream.cs
- ExtendedPropertyDescriptor.cs
- SchemaType.cs
- DescendentsWalker.cs
- ScriptDescriptor.cs
- ToolStripSeparatorRenderEventArgs.cs
- EdmToObjectNamespaceMap.cs
- ContextMenuStrip.cs
- HttpContext.cs
- JsonWriterDelegator.cs
- SettingsSection.cs
- DataSourceProvider.cs
- EndpointNotFoundException.cs
- UniqueIdentifierService.cs
- RtfToXamlLexer.cs
- EtwTrackingBehavior.cs
- PackageRelationshipSelector.cs
- DataColumnPropertyDescriptor.cs
- ResizeGrip.cs
- DropDownButton.cs
- HostedImpersonationContext.cs
- EntityDataSourceContextDisposingEventArgs.cs
- QuadraticBezierSegment.cs
- MissingSatelliteAssemblyException.cs
- DrawingVisual.cs
- CallbackValidatorAttribute.cs
- SingleAnimationUsingKeyFrames.cs
- StorageComplexPropertyMapping.cs
- XPathNode.cs
- MaskInputRejectedEventArgs.cs
- Rule.cs
- Win32Interop.cs
- StatusBar.cs
- NullableFloatMinMaxAggregationOperator.cs
- GPPOINTF.cs
- AuthenticationModuleElement.cs
- DateTimeOffsetAdapter.cs
- DataGridViewCheckBoxCell.cs
- HtmlFormWrapper.cs
- Blend.cs
- Documentation.cs
- X509CertificateChain.cs
- TemplatePagerField.cs
- CryptoApi.cs
- InvalidWMPVersionException.cs
- CellTreeSimplifier.cs
- DescendentsWalkerBase.cs
- FreezableCollection.cs
- SiteMapHierarchicalDataSourceView.cs
- HttpStreamMessageEncoderFactory.cs
- TypefaceCollection.cs
- ModifierKeysConverter.cs
- LoadedOrUnloadedOperation.cs
- RepeatInfo.cs
- QueuePathDialog.cs
- ActivityValidator.cs
- StringKeyFrameCollection.cs
- ArrayConverter.cs
- SqlMultiplexer.cs
- UnSafeCharBuffer.cs
- CodeStatementCollection.cs
- XamlBrushSerializer.cs
- MarkupCompiler.cs
- ListViewInsertedEventArgs.cs
- AppDomainCompilerProxy.cs
- DesignerAttribute.cs
- Brushes.cs
- AsymmetricKeyExchangeDeformatter.cs
- ServiceNameCollection.cs
- Graphics.cs
- WindowsStatusBar.cs
- EmissiveMaterial.cs
- DetailsView.cs
- HtmlInputImage.cs
- CodeTypeMember.cs
- DataGridCellItemAutomationPeer.cs
- ChannelSinkStacks.cs
- PropertySegmentSerializer.cs
- MethodSignatureGenerator.cs
- IISMapPath.cs
- SessionMode.cs
- ToolStripItem.cs
- Symbol.cs
- ManagementOptions.cs
- StringAnimationUsingKeyFrames.cs
- Selection.cs
- AsymmetricSignatureDeformatter.cs
- XmlLoader.cs
- PatternMatcher.cs
- EventHandlersStore.cs
- ServiceObjectContainer.cs
- XsltException.cs
- QueryOperationResponseOfT.cs
- ConfigXmlSignificantWhitespace.cs