Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DLinq / Dlinq / SqlClient / Query / ContainsRowNumberChecker.cs / 1305376 / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CaseInsensitiveOrdinalStringComparer.cs
- Polyline.cs
- BmpBitmapDecoder.cs
- StructuredTypeInfo.cs
- DateRangeEvent.cs
- NodeInfo.cs
- XPathNodeIterator.cs
- X509InitiatorCertificateClientElement.cs
- BamlLocalizableResource.cs
- ListViewItemMouseHoverEvent.cs
- HandlerMappingMemo.cs
- FastEncoderStatics.cs
- SyndicationSerializer.cs
- ResXBuildProvider.cs
- FixedSOMLineCollection.cs
- IndicFontClient.cs
- RelationalExpressions.cs
- TemplateInstanceAttribute.cs
- SqlNotificationEventArgs.cs
- ContainerControl.cs
- DataGridViewRowHeaderCell.cs
- StateWorkerRequest.cs
- EntityFunctions.cs
- TypeBinaryExpression.cs
- ContourSegment.cs
- JsonByteArrayDataContract.cs
- LinkUtilities.cs
- COM2IPerPropertyBrowsingHandler.cs
- LinqToSqlWrapper.cs
- ContractValidationHelper.cs
- OperationContractGenerationContext.cs
- HttpStreamXmlDictionaryWriter.cs
- SiteIdentityPermission.cs
- EntityTransaction.cs
- DataIdProcessor.cs
- EncoderBestFitFallback.cs
- SystemColors.cs
- DesignerCommandSet.cs
- PathFigureCollection.cs
- XmlILIndex.cs
- Rfc2898DeriveBytes.cs
- SiteOfOriginContainer.cs
- Renderer.cs
- FlowLayoutSettings.cs
- ToolStripPanelRow.cs
- SmiGettersStream.cs
- VerticalAlignConverter.cs
- DBSqlParser.cs
- DES.cs
- Page.cs
- ListBase.cs
- BinHexEncoder.cs
- InstanceKeyNotReadyException.cs
- Int64Storage.cs
- DiscreteKeyFrames.cs
- ActionMismatchAddressingException.cs
- EDesignUtil.cs
- DropAnimation.xaml.cs
- PhoneCallDesigner.cs
- TextDecorationCollection.cs
- UserControl.cs
- MemberMaps.cs
- ToolStripRendererSwitcher.cs
- Utils.cs
- LicenseProviderAttribute.cs
- ClientTargetSection.cs
- TextParagraphCache.cs
- DataGridRowHeaderAutomationPeer.cs
- EmissiveMaterial.cs
- OperationResponse.cs
- DiagnosticTraceSource.cs
- TypeElement.cs
- CodeBlockBuilder.cs
- SemanticBasicElement.cs
- CodeMemberEvent.cs
- GradientSpreadMethodValidation.cs
- GrammarBuilderDictation.cs
- TemplateBindingExtension.cs
- PersonalizationProvider.cs
- EntityDataSourceWrapper.cs
- CodeTypeParameterCollection.cs
- SecUtil.cs
- SerializationEventsCache.cs
- Query.cs
- PerformanceCounterManager.cs
- TextDecorationCollection.cs
- DataSourceXmlElementAttribute.cs
- WorkflowTransactionService.cs
- PerformanceCounterPermission.cs
- HwndKeyboardInputProvider.cs
- WebPartMovingEventArgs.cs
- ExplicitDiscriminatorMap.cs
- CheckBoxFlatAdapter.cs
- NestPullup.cs
- FreezableCollection.cs
- MethodCallConverter.cs
- URLIdentityPermission.cs
- WindowAutomationPeer.cs
- WS2007FederationHttpBindingElement.cs
- TextUtf8RawTextWriter.cs