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 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
- IProvider.cs
- DataGridTableStyleMappingNameEditor.cs
- CommandExpr.cs
- BoolExpression.cs
- DataKeyPropertyAttribute.cs
- PopupEventArgs.cs
- SwitchElementsCollection.cs
- Size3D.cs
- PostBackOptions.cs
- CaseKeyBox.xaml.cs
- HttpResponse.cs
- RecognizeCompletedEventArgs.cs
- exports.cs
- CompilationSection.cs
- ClientConvert.cs
- PersonalizationEntry.cs
- TextElementEnumerator.cs
- MemoryPressure.cs
- StrongNameUtility.cs
- WebPartHelpVerb.cs
- Int32RectConverter.cs
- PenContexts.cs
- DefaultProxySection.cs
- EventQueueState.cs
- EventManager.cs
- ColorInterpolationModeValidation.cs
- BitmapDecoder.cs
- ApplicationServicesHostFactory.cs
- InvokeMethod.cs
- ObjectDataSourceMethodEditor.cs
- Cell.cs
- HttpClientChannel.cs
- HttpContext.cs
- BooleanProjectedSlot.cs
- StyleBamlTreeBuilder.cs
- ArgumentException.cs
- PermissionSetEnumerator.cs
- LinkUtilities.cs
- MetadataItem_Static.cs
- DataGridPagerStyle.cs
- ComPlusAuthorization.cs
- LocalizationComments.cs
- TraceUtils.cs
- AmbientLight.cs
- UxThemeWrapper.cs
- WorkflowQueueInfo.cs
- RecordBuilder.cs
- SqlFileStream.cs
- ButtonField.cs
- SoapAttributeOverrides.cs
- GenericQueueSurrogate.cs
- DesignerOptions.cs
- compensatingcollection.cs
- ResetableIterator.cs
- PerformanceCountersElement.cs
- TagPrefixInfo.cs
- TemplateField.cs
- Site.cs
- SchemaMapping.cs
- IntegerValidatorAttribute.cs
- Debug.cs
- InputLangChangeEvent.cs
- GridViewCancelEditEventArgs.cs
- NativeActivityFaultContext.cs
- DataError.cs
- FixedElement.cs
- ArrangedElement.cs
- MenuEventArgs.cs
- IndicShape.cs
- EventSinkActivity.cs
- ContainerControl.cs
- EntityDataSourceWrapper.cs
- HttpRequestCacheValidator.cs
- AddInIpcChannel.cs
- LinqDataSourceInsertEventArgs.cs
- VersionedStreamOwner.cs
- PageOutputQuality.cs
- GridEntryCollection.cs
- RuleConditionDialog.Designer.cs
- FunctionMappingTranslator.cs
- Message.cs
- LinearGradientBrush.cs
- MainMenu.cs
- PolyBezierSegment.cs
- DependencyPropertyConverter.cs
- AsyncStreamReader.cs
- BinHexEncoder.cs
- ListViewVirtualItemsSelectionRangeChangedEvent.cs
- ZoneLinkButton.cs
- MetadataPropertyvalue.cs
- PinnedBufferMemoryStream.cs
- StringAnimationBase.cs
- Context.cs
- GradientSpreadMethodValidation.cs
- VirtualizingStackPanel.cs
- OleDbErrorCollection.cs
- RecipientServiceModelSecurityTokenRequirement.cs
- ResourceKey.cs
- SafeNativeMethods.cs
- ColumnMapProcessor.cs