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
- CollectionViewGroupInternal.cs
- CSharpCodeProvider.cs
- AssemblyCollection.cs
- WpfPayload.cs
- BadImageFormatException.cs
- Int32Converter.cs
- Error.cs
- ReliabilityContractAttribute.cs
- _NTAuthentication.cs
- ExpressionVisitorHelpers.cs
- QilInvokeEarlyBound.cs
- XmlUtil.cs
- CompositeKey.cs
- SerializableAttribute.cs
- BinaryObjectInfo.cs
- HttpResponseInternalBase.cs
- XslCompiledTransform.cs
- MatrixAnimationBase.cs
- SqlDataReaderSmi.cs
- SchemaTableOptionalColumn.cs
- DocumentPageHost.cs
- LoginUtil.cs
- ScrollChrome.cs
- ChangeProcessor.cs
- RegexWorker.cs
- ContainerCodeDomSerializer.cs
- NameValueConfigurationCollection.cs
- DescriptionAttribute.cs
- HttpBrowserCapabilitiesBase.cs
- LicenseException.cs
- TimeIntervalCollection.cs
- ToolstripProfessionalRenderer.cs
- OrderedEnumerableRowCollection.cs
- DefaultMemberAttribute.cs
- SiteMapDataSource.cs
- WMICapabilities.cs
- HttpConfigurationSystem.cs
- WebUtil.cs
- ClientEventManager.cs
- ImmutablePropertyDescriptorGridEntry.cs
- BuildManager.cs
- MessageQueuePermissionEntry.cs
- PathStreamGeometryContext.cs
- ExpressionBuilder.cs
- ContentControl.cs
- ListViewUpdateEventArgs.cs
- LongMinMaxAggregationOperator.cs
- PointAnimationUsingPath.cs
- CriticalHandle.cs
- EventDescriptor.cs
- Geometry3D.cs
- ObservableCollection.cs
- ControlBuilder.cs
- SignedXml.cs
- ProgressBarHighlightConverter.cs
- IntSecurity.cs
- ScriptDescriptor.cs
- TextServicesCompartment.cs
- CultureInfo.cs
- WeakEventTable.cs
- ProfileModule.cs
- KeyBinding.cs
- TraceUtils.cs
- FormViewPageEventArgs.cs
- basecomparevalidator.cs
- GeneralTransform3DGroup.cs
- SafeHandles.cs
- ValueCollectionParameterReader.cs
- DataViewSettingCollection.cs
- ReverseComparer.cs
- ProfileSettings.cs
- DefaultObjectMappingItemCollection.cs
- StdValidatorsAndConverters.cs
- ThemeDirectoryCompiler.cs
- Translator.cs
- AnnotationAuthorChangedEventArgs.cs
- TimeStampChecker.cs
- DrawingImage.cs
- Stack.cs
- KoreanCalendar.cs
- NativeMethods.cs
- PointAnimationBase.cs
- LayoutDump.cs
- RotateTransform.cs
- DataView.cs
- ComplexTypeEmitter.cs
- SchemaNotation.cs
- MetadataCache.cs
- WindowsMenu.cs
- BufferedStream2.cs
- Label.cs
- XmlReflectionImporter.cs
- UserPreferenceChangedEventArgs.cs
- MethodBuilderInstantiation.cs
- WizardStepBase.cs
- HttpProtocolImporter.cs
- EventLog.cs
- ObjectConverter.cs
- DbProviderFactoriesConfigurationHandler.cs
- SelectionHighlightInfo.cs