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
- GridViewDeleteEventArgs.cs
- InkPresenterAutomationPeer.cs
- BodyGlyph.cs
- Focus.cs
- ArgumentOutOfRangeException.cs
- DataGridToolTip.cs
- PrintEvent.cs
- UMPAttributes.cs
- DynamicMethod.cs
- ConfigurationSection.cs
- CodeTypeMemberCollection.cs
- Cursors.cs
- HostExecutionContextManager.cs
- ErrorFormatter.cs
- RichTextBoxAutomationPeer.cs
- FixedHyperLink.cs
- SessionEndingCancelEventArgs.cs
- DataGridViewColumnCollectionEditor.cs
- ModelTypeConverter.cs
- OdbcException.cs
- RestHandler.cs
- SoapHelper.cs
- ExtractCollection.cs
- DataGridViewCellValueEventArgs.cs
- DecimalConverter.cs
- AttachedPropertyMethodSelector.cs
- SecurityElement.cs
- mansign.cs
- SqlResolver.cs
- RowsCopiedEventArgs.cs
- WindowsListViewItemCheckBox.cs
- AttachmentCollection.cs
- StdValidatorsAndConverters.cs
- MenuItem.cs
- AssemblyAttributes.cs
- Function.cs
- ErrorHandler.cs
- MutableAssemblyCacheEntry.cs
- VisualStateGroup.cs
- Win32Interop.cs
- DateTimeConstantAttribute.cs
- MinMaxParagraphWidth.cs
- Regex.cs
- OpenTypeLayoutCache.cs
- EncodingDataItem.cs
- Freezable.cs
- figurelength.cs
- ByteStreamMessageEncoder.cs
- CryptoConfig.cs
- LogWriteRestartAreaState.cs
- FrameworkElement.cs
- AssemblyCollection.cs
- StaticDataManager.cs
- DomainUpDown.cs
- Predicate.cs
- ArrayElementGridEntry.cs
- DesignTimeParseData.cs
- TextEndOfLine.cs
- GlyphRunDrawing.cs
- FamilyTypefaceCollection.cs
- ToolStripContainer.cs
- XmlSchemaIdentityConstraint.cs
- XmlSerializationReader.cs
- TypeSystem.cs
- Profiler.cs
- ComplexTypeEmitter.cs
- XmlSchemaParticle.cs
- ServiceChannelFactory.cs
- Knowncolors.cs
- ServiceHttpModule.cs
- AnonymousIdentificationSection.cs
- TypeToArgumentTypeConverter.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- ModelUIElement3D.cs
- DynamicILGenerator.cs
- UndoEngine.cs
- ConstrainedGroup.cs
- CheckBoxList.cs
- TextElementEnumerator.cs
- XmlSchemaInclude.cs
- CachedPathData.cs
- InternalDispatchObject.cs
- RootNamespaceAttribute.cs
- StorageEntityContainerMapping.cs
- StrongNameIdentityPermission.cs
- ParseNumbers.cs
- NativeMethods.cs
- ToolBar.cs
- DBSchemaTable.cs
- SystemIPv6InterfaceProperties.cs
- ComponentCollection.cs
- PermissionAttributes.cs
- FileDataSourceCache.cs
- TranslateTransform3D.cs
- ToolStripPanelRow.cs
- PrivilegeNotHeldException.cs
- XamlNamespaceHelper.cs
- GlyphRunDrawing.cs
- HttpClientCredentialType.cs
- PreProcessor.cs