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
- AssociationSet.cs
- QuaternionAnimation.cs
- FrameworkElementFactoryMarkupObject.cs
- HtmlWindow.cs
- SqlProvider.cs
- PackWebRequest.cs
- SystemIPAddressInformation.cs
- HashAlgorithm.cs
- DataGridViewCellStyle.cs
- TextAdaptor.cs
- DispatcherExceptionEventArgs.cs
- DoubleConverter.cs
- DataGridViewRowsAddedEventArgs.cs
- FunctionImportElement.cs
- DataSet.cs
- XmlResolver.cs
- Events.cs
- CodeMemberField.cs
- util.cs
- SspiNegotiationTokenProviderState.cs
- CardSpacePolicyElement.cs
- ValueSerializer.cs
- TextEditor.cs
- DbBuffer.cs
- DataTableCollection.cs
- CellLabel.cs
- DropDownHolder.cs
- WebEncodingValidatorAttribute.cs
- DataGridRowClipboardEventArgs.cs
- ThaiBuddhistCalendar.cs
- LinkLabel.cs
- PageBuildProvider.cs
- MimeTextImporter.cs
- Resources.Designer.cs
- TextChange.cs
- ListItem.cs
- DatagridviewDisplayedBandsData.cs
- CurrencyManager.cs
- ScrollChrome.cs
- SqlDeflator.cs
- HtmlInputFile.cs
- GraphicsPath.cs
- XmlMemberMapping.cs
- CodeTypeReferenceSerializer.cs
- TextBounds.cs
- BufferedOutputStream.cs
- BindableAttribute.cs
- Content.cs
- RectangleConverter.cs
- CodePageUtils.cs
- UrlRoutingModule.cs
- RoutedUICommand.cs
- ScriptReference.cs
- NetworkInterface.cs
- ContentPosition.cs
- BaseTemplateCodeDomTreeGenerator.cs
- TreeNodeBinding.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- Privilege.cs
- Subtree.cs
- LayoutTable.cs
- QuotedPrintableStream.cs
- TimeoutException.cs
- HttpListenerResponse.cs
- MarkedHighlightComponent.cs
- LocalizabilityAttribute.cs
- AppSettingsReader.cs
- MulticastDelegate.cs
- xsdvalidator.cs
- AvTraceDetails.cs
- ComplexTypeEmitter.cs
- XmlSchemaComplexContentRestriction.cs
- DbBuffer.cs
- ContextStaticAttribute.cs
- HandleValueEditor.cs
- EntityCollection.cs
- OptimalTextSource.cs
- LinqDataSourceDeleteEventArgs.cs
- TimeEnumHelper.cs
- ContentControl.cs
- StrongNameUtility.cs
- Typography.cs
- CurrentTimeZone.cs
- StylusCaptureWithinProperty.cs
- LineGeometry.cs
- Repeater.cs
- EventBuilder.cs
- DataControlField.cs
- AppDomainUnloadedException.cs
- CaseInsensitiveHashCodeProvider.cs
- FakeModelItemImpl.cs
- IdnMapping.cs
- ConsoleTraceListener.cs
- TrackingProvider.cs
- SafeEventHandle.cs
- ImageConverter.cs
- SerializerProvider.cs
- DetailsViewModeEventArgs.cs
- GridViewDeletedEventArgs.cs
- EdmConstants.cs