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
- DiagnosticEventProvider.cs
- ColumnReorderedEventArgs.cs
- DiagnosticTraceSource.cs
- WindowCollection.cs
- TagNameToTypeMapper.cs
- PartialTrustHelpers.cs
- SQLBytes.cs
- Helper.cs
- embossbitmapeffect.cs
- GridViewRow.cs
- ClientBuildManagerCallback.cs
- DrawingImage.cs
- Style.cs
- SchemaCollectionPreprocessor.cs
- ResourceExpressionBuilder.cs
- DateTimeFormatInfo.cs
- StrokeCollection.cs
- ScrollBarAutomationPeer.cs
- HttpWebResponse.cs
- CodeRemoveEventStatement.cs
- ChtmlImageAdapter.cs
- LocalValueEnumerator.cs
- ScriptIgnoreAttribute.cs
- DocumentViewerBaseAutomationPeer.cs
- QilXmlReader.cs
- DataGridViewTextBoxColumn.cs
- ProviderConnectionPointCollection.cs
- Int32Storage.cs
- Thread.cs
- CheckBox.cs
- XmlDataDocument.cs
- TimelineClockCollection.cs
- ActivityDesignerAccessibleObject.cs
- SafeLibraryHandle.cs
- InternalConfigSettingsFactory.cs
- StreamMarshaler.cs
- XmlTextWriter.cs
- SecUtil.cs
- FontFamilyValueSerializer.cs
- RoleManagerEventArgs.cs
- SingleStorage.cs
- FileInfo.cs
- FutureFactory.cs
- ListenerAdaptersInstallComponent.cs
- FieldDescriptor.cs
- SafeViewOfFileHandle.cs
- ExpressionBuilderCollection.cs
- XmlSerializerVersionAttribute.cs
- HtmlButton.cs
- embossbitmapeffect.cs
- WindowsStatusBar.cs
- GridSplitter.cs
- TogglePattern.cs
- FileLevelControlBuilderAttribute.cs
- unsafenativemethodsother.cs
- FileSystemInfo.cs
- Camera.cs
- WindowsListView.cs
- TemplateAction.cs
- FormatException.cs
- SimpleType.cs
- TypeUsageBuilder.cs
- Point3DValueSerializer.cs
- EndpointAddressMessageFilterTable.cs
- ContentType.cs
- ListViewItem.cs
- UnicastIPAddressInformationCollection.cs
- BehaviorDragDropEventArgs.cs
- MouseButton.cs
- InplaceBitmapMetadataWriter.cs
- IgnoreSection.cs
- RelatedImageListAttribute.cs
- EnumerableRowCollection.cs
- InstancePersistence.cs
- SymbolMethod.cs
- DataControlField.cs
- odbcmetadatacollectionnames.cs
- TemplateControlBuildProvider.cs
- DirectoryInfo.cs
- DataTableMappingCollection.cs
- HideDisabledControlAdapter.cs
- EmptyReadOnlyDictionaryInternal.cs
- Propagator.JoinPropagator.cs
- Scene3D.cs
- CriticalExceptions.cs
- NamespaceEmitter.cs
- SelectionEditingBehavior.cs
- ISFClipboardData.cs
- DBBindings.cs
- Double.cs
- PreloadHost.cs
- TextFragmentEngine.cs
- List.cs
- TraversalRequest.cs
- StrongNameUtility.cs
- DataTable.cs
- PropertyBuilder.cs
- Attributes.cs
- VerticalAlignConverter.cs
- DbConnectionHelper.cs