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
- InvokeMethodActivity.cs
- CustomCredentialPolicy.cs
- Mappings.cs
- XamlTreeBuilder.cs
- TextContainer.cs
- TypeRestriction.cs
- PropertyConverter.cs
- RegistryPermission.cs
- StringArrayConverter.cs
- HeaderedContentControl.cs
- PieceDirectory.cs
- SaveFileDialog.cs
- SymmetricSecurityBindingElement.cs
- DoubleAnimationBase.cs
- MultiSelector.cs
- Column.cs
- DSASignatureDeformatter.cs
- EventManager.cs
- WebServiceData.cs
- PropertyPath.cs
- MetadataLocation.cs
- ITreeGenerator.cs
- ViewSimplifier.cs
- StringComparer.cs
- TextEditorParagraphs.cs
- StaticFileHandler.cs
- MLangCodePageEncoding.cs
- ApplicationHost.cs
- UnsafeNativeMethods.cs
- TriggerBase.cs
- WebPartActionVerb.cs
- XmlSchemaObject.cs
- CompilerCollection.cs
- HttpWebRequest.cs
- DataGridViewAutoSizeModeEventArgs.cs
- Codec.cs
- XamlTypeWithExplicitNamespace.cs
- ExpandCollapseProviderWrapper.cs
- WmlTextViewAdapter.cs
- ObjectTypeMapping.cs
- LogRestartAreaEnumerator.cs
- DesignerCapabilities.cs
- FixedDocumentSequencePaginator.cs
- DispatcherSynchronizationContext.cs
- AttributeQuery.cs
- DataSourceView.cs
- EncoderFallback.cs
- Thickness.cs
- GridPattern.cs
- DefinitionUpdate.cs
- GeometryModel3D.cs
- FontStyleConverter.cs
- TrackingAnnotationCollection.cs
- IsolationInterop.cs
- KeyGestureValueSerializer.cs
- FileClassifier.cs
- ThemeDictionaryExtension.cs
- pingexception.cs
- KeyValuePair.cs
- XNameConverter.cs
- Rect.cs
- CompatibleComparer.cs
- DbModificationClause.cs
- PartBasedPackageProperties.cs
- EventDescriptor.cs
- WorkflowDesigner.cs
- XmlCharCheckingReader.cs
- ArgumentException.cs
- CultureInfo.cs
- WebPartsPersonalizationAuthorization.cs
- Process.cs
- TaskDesigner.cs
- ReflectPropertyDescriptor.cs
- LightweightCodeGenerator.cs
- TreeViewItemAutomationPeer.cs
- XmlTypeMapping.cs
- XamlHostingSection.cs
- LinkButton.cs
- ScrollChrome.cs
- Helpers.cs
- MatrixCamera.cs
- ReflectPropertyDescriptor.cs
- OpCodes.cs
- BrushMappingModeValidation.cs
- Operand.cs
- InputScopeAttribute.cs
- ReadOnlyDataSourceView.cs
- ScriptDescriptor.cs
- Crypto.cs
- ValuePattern.cs
- FormsAuthenticationUserCollection.cs
- SecurityState.cs
- OdbcEnvironmentHandle.cs
- SqlCrossApplyToCrossJoin.cs
- RequiredFieldValidator.cs
- JavaScriptString.cs
- WebPartZoneBaseDesigner.cs
- MemoryResponseElement.cs
- AutoResetEvent.cs
- PhysicalOps.cs