Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- WCFServiceClientProxyGenerator.cs
- OdbcHandle.cs
- PolyBezierSegmentFigureLogic.cs
- WindowsEditBoxRange.cs
- ResourceProviderFactory.cs
- StringReader.cs
- Expr.cs
- RadioButtonBaseAdapter.cs
- XdrBuilder.cs
- Size.cs
- SystemException.cs
- TextParagraphProperties.cs
- SafeRightsManagementSessionHandle.cs
- ObjectViewFactory.cs
- NativeActivityTransactionContext.cs
- SelectedDatesCollection.cs
- DetailsView.cs
- ParseHttpDate.cs
- TemplateApplicationHelper.cs
- SerializationInfo.cs
- TextInfo.cs
- AppearanceEditorPart.cs
- Translator.cs
- CellPartitioner.cs
- TypeUtil.cs
- SpnegoTokenProvider.cs
- NotifyInputEventArgs.cs
- TypeInitializationException.cs
- listitem.cs
- SHA384CryptoServiceProvider.cs
- HandlerMappingMemo.cs
- SqlParameter.cs
- ComponentDispatcher.cs
- SqlProcedureAttribute.cs
- DockingAttribute.cs
- XPathItem.cs
- SafeEventLogReadHandle.cs
- PointCollection.cs
- ParseChildrenAsPropertiesAttribute.cs
- FormClosingEvent.cs
- LaxModeSecurityHeaderElementInferenceEngine.cs
- UpdateException.cs
- ThaiBuddhistCalendar.cs
- XPathNodeList.cs
- WebHttpBinding.cs
- ProcessingInstructionAction.cs
- CannotUnloadAppDomainException.cs
- LocalValueEnumerator.cs
- ListViewSelectEventArgs.cs
- PropertyEmitter.cs
- SRGSCompiler.cs
- OleDbDataAdapter.cs
- UnsafeNativeMethods.cs
- StringDictionary.cs
- AlphabeticalEnumConverter.cs
- AccessDataSourceView.cs
- latinshape.cs
- Pair.cs
- XPathExpr.cs
- ADMembershipUser.cs
- TextRangeEditLists.cs
- SequenceDesignerAccessibleObject.cs
- GeometryCombineModeValidation.cs
- ThemeConfigurationDialog.cs
- CodeGroup.cs
- GeometryConverter.cs
- ReliableOutputConnection.cs
- FileUtil.cs
- Point4D.cs
- Duration.cs
- TimerElapsedEvenArgs.cs
- GroupItemAutomationPeer.cs
- NativeObjectSecurity.cs
- PriorityBindingExpression.cs
- Viewport3DVisual.cs
- StoreContentChangedEventArgs.cs
- RegexCaptureCollection.cs
- ApplicationDirectory.cs
- CodeCatchClauseCollection.cs
- FileNotFoundException.cs
- SponsorHelper.cs
- EnumValAlphaComparer.cs
- PropagatorResult.cs
- Span.cs
- AppDomainProtocolHandler.cs
- TextPointer.cs
- NativeMethods.cs
- SecurityPermission.cs
- LinkTarget.cs
- DependencyObjectProvider.cs
- ControlIdConverter.cs
- WindowPattern.cs
- SoapRpcMethodAttribute.cs
- PropertyDescriptorComparer.cs
- CommonGetThemePartSize.cs
- EventLogPermissionAttribute.cs
- DataTableClearEvent.cs
- Itemizer.cs
- PageTheme.cs
- OptimalBreakSession.cs