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 / SqlAliasesReferenced.cs / 1 / 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 IEnumerable aliases;
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, IEnumerable aliases) {
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 IEnumerable aliases;
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, IEnumerable aliases) {
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
- EdmEntityTypeAttribute.cs
- ProgressBar.cs
- ExpressionLink.cs
- PathParser.cs
- XmlLoader.cs
- Parallel.cs
- Schema.cs
- GridViewSelectEventArgs.cs
- DeviceSpecificChoiceCollection.cs
- WmlImageAdapter.cs
- ObjectDataSourceDesigner.cs
- CroppedBitmap.cs
- XPathPatternParser.cs
- ParserContext.cs
- ItemChangedEventArgs.cs
- PeerName.cs
- CodeObject.cs
- WebRequestModuleElement.cs
- ObjectStateEntryDbDataRecord.cs
- ItemCheckEvent.cs
- ContextInformation.cs
- MeasureItemEvent.cs
- SecurityCriticalDataForSet.cs
- unsafeIndexingFilterStream.cs
- RowVisual.cs
- TrustManagerMoreInformation.cs
- FormCollection.cs
- PropertyDescriptor.cs
- CodeConstructor.cs
- HtmlTextBoxAdapter.cs
- BuildProvider.cs
- Menu.cs
- TableRowCollection.cs
- CodeExpressionStatement.cs
- AppDomainShutdownMonitor.cs
- BufferBuilder.cs
- SiteMap.cs
- InvalidOleVariantTypeException.cs
- AnnotationMap.cs
- ManagementOptions.cs
- AnnotationResource.cs
- PolicyValidator.cs
- SynchronizedChannelCollection.cs
- Code.cs
- GPRECTF.cs
- WebPartDescriptionCollection.cs
- ViewStateException.cs
- Point.cs
- StrongNameMembershipCondition.cs
- SecurityDescriptor.cs
- HttpBrowserCapabilitiesWrapper.cs
- DataObjectFieldAttribute.cs
- SqlServices.cs
- DbConnectionPoolIdentity.cs
- TextTabProperties.cs
- ListViewGroupCollectionEditor.cs
- UrlPath.cs
- InvalidFilterCriteriaException.cs
- DataBindEngine.cs
- ObjectDataSourceStatusEventArgs.cs
- DBSchemaRow.cs
- ScriptingJsonSerializationSection.cs
- AssemblyAttributes.cs
- ImmutableCollection.cs
- DataSourceXmlClassAttribute.cs
- CqlLexer.cs
- IPEndPoint.cs
- Flowchart.cs
- LeaseManager.cs
- HttpProfileGroupBase.cs
- PropertyGridDesigner.cs
- BindingObserver.cs
- ScalarOps.cs
- XmlDesigner.cs
- AQNBuilder.cs
- ImageConverter.cs
- DataServiceStreamProviderWrapper.cs
- ColumnMapCopier.cs
- OdbcHandle.cs
- GroupBoxAutomationPeer.cs
- NativeMethods.cs
- ImageSourceValueSerializer.cs
- MetabaseSettings.cs
- Error.cs
- COM2ComponentEditor.cs
- PersonalizableTypeEntry.cs
- EditableRegion.cs
- MenuDesigner.cs
- SecurityKeyUsage.cs
- QueryableFilterRepeater.cs
- ContractCodeDomInfo.cs
- TripleDES.cs
- StrokeCollectionDefaultValueFactory.cs
- ScriptingAuthenticationServiceSection.cs
- ConditionalDesigner.cs
- XPathScanner.cs
- CodeCatchClauseCollection.cs
- ServiceAuthorizationBehavior.cs
- DBProviderConfigurationHandler.cs
- CodeSnippetExpression.cs