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
- EntityObject.cs
- CompilerInfo.cs
- SchemaImporterExtensionsSection.cs
- DrawingContextWalker.cs
- InvalidComObjectException.cs
- HttpServerVarsCollection.cs
- TextElementCollectionHelper.cs
- Events.cs
- SqlUtils.cs
- SafeReversePInvokeHandle.cs
- ResourceExpression.cs
- Label.cs
- TextComposition.cs
- SmtpNtlmAuthenticationModule.cs
- GPStream.cs
- XmlNodeChangedEventManager.cs
- DependencyProperty.cs
- WasHttpModulesInstallComponent.cs
- DependencyPropertyConverter.cs
- Int32Converter.cs
- ScalarRestriction.cs
- ValidatorUtils.cs
- SmtpReplyReaderFactory.cs
- SortedList.cs
- SiteMapNodeItem.cs
- MatrixTransform3D.cs
- securitymgrsite.cs
- _LoggingObject.cs
- SqlConnectionPoolGroupProviderInfo.cs
- Compensate.cs
- SettingsPropertyNotFoundException.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- DeploymentSectionCache.cs
- SecuritySessionServerSettings.cs
- XPathDocumentIterator.cs
- DataSourceControlBuilder.cs
- InvokeWebService.cs
- FunctionNode.cs
- FileInfo.cs
- TypeLibConverter.cs
- HeaderElement.cs
- DataGridViewTextBoxEditingControl.cs
- GlyphElement.cs
- IItemContainerGenerator.cs
- DataSourceGeneratorException.cs
- RootProfilePropertySettingsCollection.cs
- ContentElement.cs
- WorkflowDurableInstance.cs
- FragmentQuery.cs
- HttpProfileBase.cs
- PageThemeParser.cs
- OletxTransactionFormatter.cs
- XmlChildNodes.cs
- RecognizedPhrase.cs
- DecodeHelper.cs
- TextDecorationLocationValidation.cs
- CachedBitmap.cs
- PageSettings.cs
- DataGridComponentEditor.cs
- GiveFeedbackEventArgs.cs
- DBConnectionString.cs
- XMLSchema.cs
- StringComparer.cs
- DataBoundControl.cs
- UnicodeEncoding.cs
- CustomCategoryAttribute.cs
- DragDeltaEventArgs.cs
- LinqDataSourceDeleteEventArgs.cs
- TemplateControl.cs
- ProfessionalColors.cs
- OptimizerPatterns.cs
- UmAlQuraCalendar.cs
- objectresult_tresulttype.cs
- BuildProvider.cs
- BeginStoryboard.cs
- DesignerFrame.cs
- ColumnClickEvent.cs
- FixedPosition.cs
- CodeDomSerializer.cs
- ListView.cs
- NullPackagingPolicy.cs
- XmlSchemaAny.cs
- ConnectionProviderAttribute.cs
- HotCommands.cs
- SponsorHelper.cs
- Module.cs
- HttpListenerResponse.cs
- InvalidProgramException.cs
- GridEntry.cs
- GraphicsContainer.cs
- Compilation.cs
- StylusPointPropertyInfoDefaults.cs
- ConnectionProviderAttribute.cs
- DesignerPerfEventProvider.cs
- RichTextBox.cs
- NativeMethods.cs
- NameSpaceEvent.cs
- KeySplineConverter.cs
- ArrangedElementCollection.cs
- WebFormsRootDesigner.cs