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
- XmlSerializableWriter.cs
- ConstraintStruct.cs
- SqlBulkCopyColumnMapping.cs
- EntityModelSchemaGenerator.cs
- DrawListViewColumnHeaderEventArgs.cs
- CacheOutputQuery.cs
- Timer.cs
- ExternalFile.cs
- __ConsoleStream.cs
- DrawingAttributes.cs
- AdornerHitTestResult.cs
- ItemCollectionEditor.cs
- GridViewRow.cs
- ControlValuePropertyAttribute.cs
- ISSmlParser.cs
- Glyph.cs
- OletxTransactionFormatter.cs
- MgmtResManager.cs
- EventBuilder.cs
- AttributeSetAction.cs
- ViewStateModeByIdAttribute.cs
- TextEffect.cs
- ManagementException.cs
- RemoteWebConfigurationHost.cs
- CssStyleCollection.cs
- MenuRenderer.cs
- ContentControl.cs
- Screen.cs
- FontCollection.cs
- SystemBrushes.cs
- Compilation.cs
- ConfigXmlText.cs
- XmlSchemaInclude.cs
- XmlAnyElementAttribute.cs
- NodeLabelEditEvent.cs
- AnnotationObservableCollection.cs
- MetadataItemCollectionFactory.cs
- SettingsPropertyCollection.cs
- ContentControl.cs
- XsdCachingReader.cs
- validationstate.cs
- BamlRecordHelper.cs
- DoWhile.cs
- XsltContext.cs
- FeatureAttribute.cs
- XhtmlBasicListAdapter.cs
- CommandField.cs
- IImplicitResourceProvider.cs
- XamlToRtfParser.cs
- SmtpTransport.cs
- MouseOverProperty.cs
- ClientBuildManagerCallback.cs
- TextTreeDeleteContentUndoUnit.cs
- FixedSOMPage.cs
- ByteAnimationBase.cs
- MethodImplAttribute.cs
- UriTemplateMatch.cs
- FileDialogCustomPlacesCollection.cs
- ScrollEvent.cs
- AssociationSet.cs
- FormatException.cs
- NativeMethods.cs
- basenumberconverter.cs
- File.cs
- FixedSOMImage.cs
- Constraint.cs
- VScrollBar.cs
- SqlConnectionManager.cs
- SelectionItemPattern.cs
- EntityException.cs
- ObjectMemberMapping.cs
- VisualStyleInformation.cs
- OleDbPropertySetGuid.cs
- OleDbPropertySetGuid.cs
- ReflectionHelper.cs
- CacheHelper.cs
- DataKeyArray.cs
- HttpContext.cs
- ConfigurationLocationCollection.cs
- PropertyKey.cs
- UriTemplateTrieLocation.cs
- Symbol.cs
- DesignerDataTable.cs
- DeviceContexts.cs
- WebColorConverter.cs
- Part.cs
- PrintController.cs
- ButtonFlatAdapter.cs
- TemplateBindingExpressionConverter.cs
- controlskin.cs
- Matrix3D.cs
- Serializer.cs
- WebPartHeaderCloseVerb.cs
- EnumerableValidator.cs
- ValueExpressions.cs
- AuthenticationConfig.cs
- DataGridViewCellParsingEventArgs.cs
- UserUseLicenseDictionaryLoader.cs
- TypeForwardedToAttribute.cs
- CounterSetInstanceCounterDataSet.cs