Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DLinq / Dlinq / SqlClient / Query / SqlAliasesReferenced.cs / 1305376 / SqlAliasesReferenced.cs
using System; using System.Collections.Generic; using System.Text; namespace System.Data.Linq.SqlClient { ////// Find referenced Aliases within a node. /// internal static class SqlAliasesReferenced { ////// Private visitor which walks the tree and looks for referenced aliases. /// private class Visitor : SqlVisitor { internal IEnumerablealiases; internal bool referencesAnyMatchingAliases = false; internal override SqlNode Visit(SqlNode node) { // Short-circuit when the answer is alreading known if (this.referencesAnyMatchingAliases) { return node; } return base.Visit(node); } internal SqlAlias VisitAliasConsumed(SqlAlias a) { if (a == null) return a; bool match = false; foreach (SqlAlias alias in aliases) if (alias == a) { match = true; break; } if (match) { this.referencesAnyMatchingAliases = true; } return a; } internal override SqlExpression VisitColumn(SqlColumn col) { VisitAliasConsumed(col.Alias); VisitExpression(col.Expression); return col; } internal override SqlExpression VisitColumnRef(SqlColumnRef cref) { VisitAliasConsumed(cref.Column.Alias); VisitExpression(cref.Column.Expression); return cref; } } /// /// Returns true iff the given node references any aliases the list of 'aliases'. /// internal static bool ReferencesAny(SqlNode node, IEnumerablealiases) { Visitor visitor = new Visitor(); visitor.aliases = aliases; visitor.Visit(node); return visitor.referencesAnyMatchingAliases; } } } // 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 { /// /// Find referenced Aliases within a node. /// internal static class SqlAliasesReferenced { ////// Private visitor which walks the tree and looks for referenced aliases. /// private class Visitor : SqlVisitor { internal IEnumerablealiases; internal bool referencesAnyMatchingAliases = false; internal override SqlNode Visit(SqlNode node) { // Short-circuit when the answer is alreading known if (this.referencesAnyMatchingAliases) { return node; } return base.Visit(node); } internal SqlAlias VisitAliasConsumed(SqlAlias a) { if (a == null) return a; bool match = false; foreach (SqlAlias alias in aliases) if (alias == a) { match = true; break; } if (match) { this.referencesAnyMatchingAliases = true; } return a; } internal override SqlExpression VisitColumn(SqlColumn col) { VisitAliasConsumed(col.Alias); VisitExpression(col.Expression); return col; } internal override SqlExpression VisitColumnRef(SqlColumnRef cref) { VisitAliasConsumed(cref.Column.Alias); VisitExpression(cref.Column.Expression); return cref; } } /// /// Returns true iff the given node references any aliases the list of 'aliases'. /// internal static bool ReferencesAny(SqlNode node, IEnumerablealiases) { Visitor visitor = new Visitor(); visitor.aliases = aliases; visitor.Visit(node); return visitor.referencesAnyMatchingAliases; } } } // 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
- SimpleWorkerRequest.cs
- SqlXmlStorage.cs
- EditorPartChrome.cs
- InstanceStore.cs
- HMACSHA1.cs
- UntypedNullExpression.cs
- UserPersonalizationStateInfo.cs
- HttpException.cs
- Visual.cs
- IPAddressCollection.cs
- ChildTable.cs
- EventLogPermissionEntry.cs
- OracleNumber.cs
- DataSourceHelper.cs
- SafeWaitHandle.cs
- TemplatedAdorner.cs
- X509WindowsSecurityToken.cs
- PlainXmlWriter.cs
- JsonReaderWriterFactory.cs
- DbModificationCommandTree.cs
- DllNotFoundException.cs
- DbConnectionInternal.cs
- Misc.cs
- InsufficientMemoryException.cs
- CodeThrowExceptionStatement.cs
- OutputWindow.cs
- WebBrowserContainer.cs
- DataTableCollection.cs
- ComboBoxDesigner.cs
- InvalidComObjectException.cs
- ListViewGroup.cs
- UpDownEvent.cs
- BaseCAMarshaler.cs
- EntityDataSourceColumn.cs
- DataGridParentRows.cs
- safemediahandle.cs
- MouseGestureValueSerializer.cs
- TagPrefixAttribute.cs
- ComContractElement.cs
- Accessible.cs
- PeerObject.cs
- ConfigsHelper.cs
- SHA1Managed.cs
- Clock.cs
- AnnotationHelper.cs
- RtfToXamlLexer.cs
- InputManager.cs
- TreeView.cs
- ExtendedProperty.cs
- GridEntry.cs
- TargetFrameworkAttribute.cs
- PageTheme.cs
- TextDecorationCollection.cs
- JsonFormatWriterGenerator.cs
- ValidationSummary.cs
- PocoEntityKeyStrategy.cs
- StaticContext.cs
- RbTree.cs
- TemplateInstanceAttribute.cs
- QueryContinueDragEvent.cs
- TempEnvironment.cs
- ScrollContentPresenter.cs
- CapabilitiesRule.cs
- InvalidCommandTreeException.cs
- DataBoundControlHelper.cs
- DocobjHost.cs
- QuadraticBezierSegment.cs
- BindingCompleteEventArgs.cs
- IssuedSecurityTokenParameters.cs
- Material.cs
- InputQueueChannel.cs
- SqlFlattener.cs
- KeyNameIdentifierClause.cs
- Function.cs
- HealthMonitoringSection.cs
- FrameworkElementFactory.cs
- CodeSubDirectoriesCollection.cs
- EntityTypeEmitter.cs
- ListViewInsertEventArgs.cs
- CharacterString.cs
- DataSourceCacheDurationConverter.cs
- XmlSchemaValidator.cs
- BroadcastEventHelper.cs
- Int32KeyFrameCollection.cs
- SoapElementAttribute.cs
- CompleteWizardStep.cs
- TypeBuilder.cs
- NextPreviousPagerField.cs
- TagMapInfo.cs
- IsolatedStorageException.cs
- GlyphRunDrawing.cs
- ReferentialConstraint.cs
- SqlDataSourceCache.cs
- UriSection.cs
- FlowLayoutSettings.cs
- MethodExpr.cs
- Exceptions.cs
- ValidationEventArgs.cs
- ConfigXmlCDataSection.cs
- HttpGetServerProtocol.cs