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
- ConfigurationSectionHelper.cs
- SuspendDesigner.cs
- contentDescriptor.cs
- LoginDesigner.cs
- BlockCollection.cs
- XmlLanguage.cs
- XmlAttributeOverrides.cs
- IPGlobalProperties.cs
- TextDecorationCollection.cs
- cookiecontainer.cs
- XPathNodeList.cs
- UriSection.cs
- XmlDomTextWriter.cs
- CellNormalizer.cs
- AnimatedTypeHelpers.cs
- FirewallWrapper.cs
- HtmlEmptyTagControlBuilder.cs
- Nullable.cs
- CharUnicodeInfo.cs
- SourceCollection.cs
- DataKeyCollection.cs
- ObjectViewEntityCollectionData.cs
- SymbolTable.cs
- LineBreak.cs
- XmlSchemaGroup.cs
- RootBuilder.cs
- UrlPropertyAttribute.cs
- MDIClient.cs
- ValuePatternIdentifiers.cs
- RequiredAttributeAttribute.cs
- ConfigXmlText.cs
- WSDualHttpSecurity.cs
- HashAlgorithm.cs
- Content.cs
- CTreeGenerator.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- ConcurrentStack.cs
- LinkLabel.cs
- XmlWriter.cs
- ContainerSelectorActiveEvent.cs
- ColorAnimationBase.cs
- ConnectionPointCookie.cs
- ActivityStatusChangeEventArgs.cs
- MenuEventArgs.cs
- CopyAttributesAction.cs
- ToolStripMenuItemCodeDomSerializer.cs
- Condition.cs
- Visual3DCollection.cs
- PropertyTab.cs
- ZipIOCentralDirectoryDigitalSignature.cs
- WebControlAdapter.cs
- AnnotationStore.cs
- SchemaTableOptionalColumn.cs
- CompoundFileStorageReference.cs
- SoapAttributes.cs
- CollectionDataContractAttribute.cs
- CommandBindingCollection.cs
- ButtonFieldBase.cs
- ContextMarshalException.cs
- ScrollChrome.cs
- PermissionAttributes.cs
- __ComObject.cs
- RegistryConfigurationProvider.cs
- Authorization.cs
- HtmlInputButton.cs
- DataService.cs
- ServiceContractGenerationContext.cs
- CallTemplateAction.cs
- EasingFunctionBase.cs
- Operators.cs
- SerialErrors.cs
- Subtract.cs
- Pair.cs
- ParameterDataSourceExpression.cs
- JapaneseCalendar.cs
- DataBindingHandlerAttribute.cs
- UshortList2.cs
- CodeAccessPermission.cs
- PanelContainerDesigner.cs
- HttpClientChannel.cs
- ExtractedStateEntry.cs
- MainMenu.cs
- EditorAttribute.cs
- CardSpaceSelector.cs
- FileBasedResourceGroveler.cs
- EntityTypeBase.cs
- BatchParser.cs
- MaterialGroup.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- CultureInfo.cs
- WriteTimeStream.cs
- PriorityBinding.cs
- UnknownWrapper.cs
- WindowsScroll.cs
- PermissionSetTriple.cs
- StringSorter.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- SchemaImporterExtension.cs
- ISAPIRuntime.cs
- XmlSchemaAll.cs