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
- TypeUtil.cs
- UnsafeNativeMethodsPenimc.cs
- BamlWriter.cs
- WebSysDisplayNameAttribute.cs
- RegistryPermission.cs
- DataError.cs
- XmlAttributeHolder.cs
- ItemsPresenter.cs
- ValueUnavailableException.cs
- RefExpr.cs
- AuthenticationModuleElement.cs
- SaveFileDialog.cs
- SqlTypeSystemProvider.cs
- MemberExpression.cs
- RootAction.cs
- CheckedPointers.cs
- _IPv4Address.cs
- SqlConnection.cs
- DataGridColumnCollection.cs
- TemplateBamlRecordReader.cs
- SystemPens.cs
- LocalClientSecuritySettingsElement.cs
- SuppressMergeCheckAttribute.cs
- SoapObjectReader.cs
- UrlEncodedParameterWriter.cs
- ValidationSummary.cs
- WindowsStartMenu.cs
- ModelFunction.cs
- XamlRtfConverter.cs
- WebPartConnectionsCloseVerb.cs
- BuildProvider.cs
- ContentElementAutomationPeer.cs
- DiagnosticSection.cs
- BridgeDataRecord.cs
- SpeechRecognitionEngine.cs
- JsonObjectDataContract.cs
- SqlResolver.cs
- MergeEnumerator.cs
- SyndicationContent.cs
- ModifierKeysConverter.cs
- OdbcException.cs
- MailMessage.cs
- CompareInfo.cs
- TreeView.cs
- UserControl.cs
- ThemeDirectoryCompiler.cs
- CompilerInfo.cs
- WebPartTransformer.cs
- MessageSecurityProtocol.cs
- RequestTimeoutManager.cs
- EventLogPermissionHolder.cs
- TdsParser.cs
- DataGridViewRowsAddedEventArgs.cs
- xml.cs
- CompiledQueryCacheEntry.cs
- IsolatedStorageException.cs
- NavigationEventArgs.cs
- SchemaInfo.cs
- DetailsViewUpdateEventArgs.cs
- Win32SafeHandles.cs
- StringComparer.cs
- ConfigurationStrings.cs
- HorizontalAlignConverter.cs
- XmlQueryType.cs
- safex509handles.cs
- MD5.cs
- AncestorChangedEventArgs.cs
- Keywords.cs
- InvalidCommandTreeException.cs
- PrivilegeNotHeldException.cs
- GeneralTransform3D.cs
- RequestCache.cs
- OleDbConnectionFactory.cs
- QueryContinueDragEventArgs.cs
- SqlLiftWhereClauses.cs
- IconBitmapDecoder.cs
- NegationPusher.cs
- RadialGradientBrush.cs
- CompensationToken.cs
- FormViewUpdatedEventArgs.cs
- InstanceCollisionException.cs
- BamlWriter.cs
- SurrogateEncoder.cs
- CopyAttributesAction.cs
- CustomError.cs
- ProcessHostFactoryHelper.cs
- Button.cs
- EventLogInformation.cs
- RecommendedAsConfigurableAttribute.cs
- SimpleHandlerFactory.cs
- XappLauncher.cs
- InstalledFontCollection.cs
- prompt.cs
- XPathChildIterator.cs
- DbConnectionPool.cs
- BitmapImage.cs
- HandleCollector.cs
- SafeEventLogWriteHandle.cs
- ScrollBar.cs
- InstanceDataCollectionCollection.cs