Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- BaseDataListPage.cs
- FilterEventArgs.cs
- ServiceMemoryGates.cs
- UnsafeNativeMethodsPenimc.cs
- VoiceObjectToken.cs
- ObjectConverter.cs
- BulletDecorator.cs
- DataServiceHostWrapper.cs
- Dispatcher.cs
- ReferenceEqualityComparer.cs
- CacheEntry.cs
- CancellableEnumerable.cs
- RubberbandSelector.cs
- DataGridViewColumnCollection.cs
- ColorDialog.cs
- ExpressionConverter.cs
- LocalTransaction.cs
- AlternateView.cs
- ComplexType.cs
- ProtocolElement.cs
- FtpCachePolicyElement.cs
- PersonalizableTypeEntry.cs
- ScaleTransform.cs
- RecordBuilder.cs
- HttpPostedFile.cs
- XmlNodeReader.cs
- EventHandlingScope.cs
- MethodCallConverter.cs
- SelectingProviderEventArgs.cs
- StructuralObject.cs
- ReturnEventArgs.cs
- mongolianshape.cs
- ZipIOLocalFileBlock.cs
- EdmScalarPropertyAttribute.cs
- DocumentReference.cs
- oledbmetadatacolumnnames.cs
- FontEmbeddingManager.cs
- SizeValueSerializer.cs
- ErrorRuntimeConfig.cs
- DynamicValueConverter.cs
- newitemfactory.cs
- BidPrivateBase.cs
- DrawingDrawingContext.cs
- XmlSchemaAny.cs
- OracleTimeSpan.cs
- BookmarkList.cs
- StreamReader.cs
- EncoderParameter.cs
- Operand.cs
- CodeIterationStatement.cs
- FloaterParagraph.cs
- TransactedBatchContext.cs
- ReverseInheritProperty.cs
- UrlPath.cs
- WpfKnownMemberInvoker.cs
- GlyphCollection.cs
- StreamUpgradeAcceptor.cs
- BatchParser.cs
- SpotLight.cs
- HyperLinkField.cs
- EditorBrowsableAttribute.cs
- Command.cs
- AutomationProperty.cs
- XLinq.cs
- FontDifferentiator.cs
- WebPartCatalogCloseVerb.cs
- Decorator.cs
- SafeTokenHandle.cs
- ConsoleTraceListener.cs
- ModelService.cs
- HandleCollector.cs
- SqlUserDefinedTypeAttribute.cs
- formatter.cs
- SQLGuid.cs
- UserPersonalizationStateInfo.cs
- streamingZipPartStream.cs
- EventMap.cs
- ComponentResourceKeyConverter.cs
- ExpandCollapseProviderWrapper.cs
- DataTablePropertyDescriptor.cs
- UserControlCodeDomTreeGenerator.cs
- MediaTimeline.cs
- UpdateExpressionVisitor.cs
- DoubleLinkList.cs
- RepeaterItemEventArgs.cs
- CursorInteropHelper.cs
- AnimationTimeline.cs
- NamespaceQuery.cs
- RegexStringValidator.cs
- SmiTypedGetterSetter.cs
- CodeMemberField.cs
- CommonXSendMessage.cs
- UseAttributeSetsAction.cs
- LassoSelectionBehavior.cs
- WaitForChangedResult.cs
- ContextMarshalException.cs
- QilGenerator.cs
- RoleService.cs
- XmlAtomErrorReader.cs
- SystemFonts.cs