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
- HelpEvent.cs
- TableHeaderCell.cs
- CacheHelper.cs
- Matrix.cs
- FixedSOMPageConstructor.cs
- PrintPreviewGraphics.cs
- ResourceIDHelper.cs
- XmlSchemaElement.cs
- ServiceDefaults.cs
- PointCollection.cs
- AsymmetricCryptoHandle.cs
- DrawingGroupDrawingContext.cs
- UnsafeNativeMethodsPenimc.cs
- UnmanagedMarshal.cs
- HGlobalSafeHandle.cs
- TypedAsyncResult.cs
- TagNameToTypeMapper.cs
- Model3DGroup.cs
- NonDualMessageSecurityOverHttp.cs
- MemoryStream.cs
- ToolStripSplitStackLayout.cs
- COM2ExtendedBrowsingHandler.cs
- StringSource.cs
- DataGridViewColumnEventArgs.cs
- OutOfMemoryException.cs
- XXXOnTypeBuilderInstantiation.cs
- SingleAnimation.cs
- ProcessModelInfo.cs
- SetterBase.cs
- RevocationPoint.cs
- AssemblyNameUtility.cs
- PropertyCollection.cs
- Transform3DGroup.cs
- SqlWebEventProvider.cs
- AttachedAnnotationChangedEventArgs.cs
- ServerValidateEventArgs.cs
- InputMethodStateTypeInfo.cs
- MouseActionValueSerializer.cs
- ConditionCollection.cs
- IgnoreFileBuildProvider.cs
- NullableConverter.cs
- JavaScriptSerializer.cs
- VisualStyleInformation.cs
- URLString.cs
- CompositionTarget.cs
- DataGridItem.cs
- WinEventTracker.cs
- Attachment.cs
- Metadata.cs
- BaseInfoTable.cs
- InvalidEnumArgumentException.cs
- ExpressionConverter.cs
- SubqueryRules.cs
- QilStrConcatenator.cs
- CharAnimationUsingKeyFrames.cs
- ComponentEditorPage.cs
- DbExpressionVisitor_TResultType.cs
- SqlDataSourceQueryEditorForm.cs
- FileRecordSequence.cs
- SeekStoryboard.cs
- Closure.cs
- ObjectManager.cs
- XmlCharCheckingWriter.cs
- AdRotator.cs
- StylusCollection.cs
- StateInitializationDesigner.cs
- DataGrid.cs
- ScrollableControl.cs
- COMException.cs
- XmlBinaryReader.cs
- WebPartConnectionsDisconnectVerb.cs
- DispatcherEventArgs.cs
- ClosableStream.cs
- CodeAttributeDeclarationCollection.cs
- PageThemeBuildProvider.cs
- WindowsStartMenu.cs
- ProfileParameter.cs
- TemplatedWizardStep.cs
- SafeSecurityHandles.cs
- ACL.cs
- EntityDataSourceDesigner.cs
- Profiler.cs
- MatrixTransform3D.cs
- GeneralTransform2DTo3DTo2D.cs
- EventToken.cs
- SoapProcessingBehavior.cs
- XmlTypeMapping.cs
- UnsafeNativeMethodsCLR.cs
- StringInfo.cs
- MasterPage.cs
- HwndSource.cs
- NonClientArea.cs
- DataGridViewRowCollection.cs
- XsltException.cs
- SocketStream.cs
- XmlIterators.cs
- ProcessHostServerConfig.cs
- MobileUITypeEditor.cs
- ImportedNamespaceContextItem.cs
- GridSplitterAutomationPeer.cs