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
- ICollection.cs
- ContextMenu.cs
- URLMembershipCondition.cs
- Rotation3DAnimation.cs
- ConnectionPoint.cs
- QilInvokeEarlyBound.cs
- CommandDesigner.cs
- Utils.cs
- diagnosticsswitches.cs
- HttpModuleAction.cs
- CategoryNameCollection.cs
- SemanticKeyElement.cs
- OleDbRowUpdatedEvent.cs
- HttpRequest.cs
- Lookup.cs
- Size3DConverter.cs
- CultureInfo.cs
- ListArgumentProvider.cs
- _IPv6Address.cs
- Currency.cs
- OrderedDictionary.cs
- DesignerDeviceConfig.cs
- EntityConnection.cs
- MetaDataInfo.cs
- WebPartsPersonalizationAuthorization.cs
- SafeArrayRankMismatchException.cs
- SqlDataReader.cs
- RelationshipSet.cs
- WebDescriptionAttribute.cs
- SaveFileDialog.cs
- StreamWriter.cs
- WebInvokeAttribute.cs
- MultiView.cs
- SystemIPv4InterfaceProperties.cs
- ArithmeticException.cs
- XmlPropertyBag.cs
- ShapingWorkspace.cs
- FileCodeGroup.cs
- Ports.cs
- Base64Encoder.cs
- HttpAsyncResult.cs
- DataStreams.cs
- TraceSource.cs
- TextEditorThreadLocalStore.cs
- WebServiceMethodData.cs
- ObjectCacheHost.cs
- ControlParameter.cs
- DockAndAnchorLayout.cs
- FormsAuthenticationModule.cs
- WebChannelFactory.cs
- AlternationConverter.cs
- SingleAnimationBase.cs
- InkCanvasSelectionAdorner.cs
- ResolveCriteriaCD1.cs
- KeyValueConfigurationElement.cs
- Padding.cs
- XmlCompatibilityReader.cs
- WorkerRequest.cs
- AuthenticatingEventArgs.cs
- FloaterParagraph.cs
- ParserExtension.cs
- DoubleCollectionValueSerializer.cs
- TextPointerBase.cs
- XmlnsDictionary.cs
- EntitySqlException.cs
- AuthStoreRoleProvider.cs
- GregorianCalendarHelper.cs
- XamlToRtfWriter.cs
- GZipDecoder.cs
- TrackingDataItemValue.cs
- EntityConnectionStringBuilderItem.cs
- BamlTreeMap.cs
- TcpHostedTransportConfiguration.cs
- ProfileInfo.cs
- CompositeControl.cs
- activationcontext.cs
- ListenerElementsCollection.cs
- datacache.cs
- httpapplicationstate.cs
- PackagingUtilities.cs
- DesignerActionTextItem.cs
- ProfileSection.cs
- PropertyGridView.cs
- MultiSelector.cs
- XmlTextReader.cs
- TypeConverterAttribute.cs
- ContextMenuStrip.cs
- MethodSignatureGenerator.cs
- NetTcpSection.cs
- StackSpiller.Generated.cs
- DetailsViewModeEventArgs.cs
- DragDrop.cs
- SqlPersistenceWorkflowInstanceDescription.cs
- SynchronizedDispatch.cs
- EventLogSession.cs
- SafeBitVector32.cs
- BaseValidatorDesigner.cs
- Transform.cs
- SequenceDesigner.cs
- TimeSpanValidatorAttribute.cs