Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- SqlMethodAttribute.cs
- IDataContractSurrogate.cs
- ECDiffieHellmanPublicKey.cs
- TextOnlyOutput.cs
- SystemWebCachingSectionGroup.cs
- CompositeActivityMarkupSerializer.cs
- PathGradientBrush.cs
- SignatureDescription.cs
- CodeMethodReturnStatement.cs
- ControlParser.cs
- ControlPaint.cs
- InstanceDataCollection.cs
- XmlBoundElement.cs
- DependencyPropertyKind.cs
- WebContext.cs
- UserPreferenceChangedEventArgs.cs
- GroupBoxRenderer.cs
- HeaderedContentControl.cs
- SafeArrayTypeMismatchException.cs
- StatusBar.cs
- GeometryGroup.cs
- NamedObject.cs
- Query.cs
- ExpressionBuilderContext.cs
- OleDbFactory.cs
- SmiMetaData.cs
- DataSourceIDConverter.cs
- EarlyBoundInfo.cs
- TCPClient.cs
- Underline.cs
- ContentElementCollection.cs
- RegexGroup.cs
- ProviderConnectionPointCollection.cs
- TextElementEnumerator.cs
- CatalogPartDesigner.cs
- XmlSchemaSimpleTypeList.cs
- PinnedBufferMemoryStream.cs
- SqlDependency.cs
- CngKeyCreationParameters.cs
- DataGridView.cs
- TextEditorMouse.cs
- ProtocolImporter.cs
- WSSecureConversationFeb2005.cs
- HtmlInputButton.cs
- GridViewEditEventArgs.cs
- StoreItemCollection.cs
- LinqDataSourceEditData.cs
- Material.cs
- XpsSerializerWriter.cs
- OrderByBuilder.cs
- OneToOneMappingSerializer.cs
- MachineKeySection.cs
- KeyGestureValueSerializer.cs
- VBIdentifierName.cs
- SByteConverter.cs
- NameTable.cs
- ToolStripDropDownClosedEventArgs.cs
- DocumentPage.cs
- BoolExpression.cs
- XhtmlMobileTextWriter.cs
- InProcStateClientManager.cs
- PropertyIDSet.cs
- ExpressionBuilder.cs
- Tuple.cs
- ProfessionalColorTable.cs
- TextWriterTraceListener.cs
- TypeToTreeConverter.cs
- UnhandledExceptionEventArgs.cs
- EventSinkActivity.cs
- MessageLogger.cs
- XmlWrappingReader.cs
- SchemaImporterExtensionElementCollection.cs
- ParameterElementCollection.cs
- NativeWrapper.cs
- ResXDataNode.cs
- LinearGradientBrush.cs
- PropertyNames.cs
- NotificationContext.cs
- regiisutil.cs
- LinkArea.cs
- DataControlHelper.cs
- WebPartEventArgs.cs
- ContainerParaClient.cs
- XmlSerializableReader.cs
- TextTreeTextNode.cs
- CompilationSection.cs
- MiniConstructorInfo.cs
- RepeatBehaviorConverter.cs
- KeyedHashAlgorithm.cs
- PageThemeBuildProvider.cs
- XpsSerializationManager.cs
- SqlMethodCallConverter.cs
- FormViewDeleteEventArgs.cs
- SiteMapNodeItemEventArgs.cs
- QilTernary.cs
- DataContractAttribute.cs
- RenderingBiasValidation.cs
- BaseConfigurationRecord.cs
- VariantWrapper.cs
- TrackingMemoryStreamFactory.cs