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
- InstanceData.cs
- ParserExtension.cs
- BStrWrapper.cs
- TransactionsSectionGroup.cs
- Function.cs
- HtmlTernaryTree.cs
- TTSEvent.cs
- NativeStructs.cs
- DbDataReader.cs
- MULTI_QI.cs
- IPHostEntry.cs
- CodeSubDirectory.cs
- CheckoutException.cs
- DesignerObject.cs
- ToolStripPanelRow.cs
- MenuAdapter.cs
- UnknownBitmapEncoder.cs
- MethodToken.cs
- OleCmdHelper.cs
- HttpProcessUtility.cs
- DesigntimeLicenseContextSerializer.cs
- StorageMappingItemCollection.cs
- KnownTypes.cs
- SpeechRecognizer.cs
- MembershipValidatePasswordEventArgs.cs
- ToolboxItemFilterAttribute.cs
- ArrayListCollectionBase.cs
- IPAddressCollection.cs
- LoginView.cs
- ConvertTextFrag.cs
- DataGridViewCellFormattingEventArgs.cs
- GatewayIPAddressInformationCollection.cs
- DockPattern.cs
- DocumentStatusResources.cs
- HtmlFormAdapter.cs
- ColumnResult.cs
- RegexCompiler.cs
- TypefaceMap.cs
- WebBrowserEvent.cs
- Msec.cs
- ViewLoader.cs
- SubpageParagraph.cs
- Unit.cs
- ProcessHostConfigUtils.cs
- BlockCollection.cs
- OperatingSystem.cs
- WebPartVerb.cs
- Documentation.cs
- OutKeywords.cs
- PrinterUnitConvert.cs
- PageParser.cs
- SamlAuthenticationClaimResource.cs
- ProfileBuildProvider.cs
- SystemIPGlobalStatistics.cs
- StringBuilder.cs
- OdbcStatementHandle.cs
- DateTimePickerDesigner.cs
- WinFormsComponentEditor.cs
- DesignTimeValidationFeature.cs
- SafeSecurityHandles.cs
- HttpException.cs
- BoundField.cs
- DataAccessException.cs
- QueryOptionExpression.cs
- ProfessionalColors.cs
- LineGeometry.cs
- SqlVersion.cs
- Select.cs
- SplayTreeNode.cs
- MaskInputRejectedEventArgs.cs
- ForwardPositionQuery.cs
- HostedBindingBehavior.cs
- TextRenderer.cs
- QilInvokeEarlyBound.cs
- StylusPointPropertyInfoDefaults.cs
- ProxyWebPart.cs
- RegexCompilationInfo.cs
- DesignTimeType.cs
- NameValueConfigurationElement.cs
- TypeConverter.cs
- MapPathBasedVirtualPathProvider.cs
- ViewEventArgs.cs
- UmAlQuraCalendar.cs
- OleDbPermission.cs
- _DisconnectOverlappedAsyncResult.cs
- SmiGettersStream.cs
- WizardForm.cs
- DataKeyCollection.cs
- ImageListUtils.cs
- WSDualHttpBindingElement.cs
- srgsitem.cs
- CoreSwitches.cs
- XmlChildNodes.cs
- Normalizer.cs
- NoneExcludedImageIndexConverter.cs
- Deflater.cs
- Transform3DGroup.cs
- TextRange.cs
- TransactionProtocolConverter.cs
- OutputCacheProfile.cs