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
- ObjectDisposedException.cs
- DbUpdateCommandTree.cs
- TypeConverterValueSerializer.cs
- PropertyChangingEventArgs.cs
- WorkflowFormatterBehavior.cs
- StylusPointPropertyId.cs
- VisualCollection.cs
- SelectionEditingBehavior.cs
- RuleElement.cs
- Stream.cs
- BaseTemplateBuildProvider.cs
- ObjectStorage.cs
- PointAnimationUsingPath.cs
- Not.cs
- OptimisticConcurrencyException.cs
- BevelBitmapEffect.cs
- ResetableIterator.cs
- MethodMessage.cs
- DragDeltaEventArgs.cs
- IgnoreSectionHandler.cs
- SafeNativeMethods.cs
- TemplateLookupAction.cs
- TextReturnReader.cs
- EncodingTable.cs
- BidOverLoads.cs
- TextServicesDisplayAttribute.cs
- BaseCollection.cs
- CaseInsensitiveHashCodeProvider.cs
- BezierSegment.cs
- PrintController.cs
- SplitContainer.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- ScrollChrome.cs
- DataGridSortCommandEventArgs.cs
- X509ChainElement.cs
- ColorTranslator.cs
- ParserContext.cs
- GridViewColumnCollection.cs
- DeliveryStrategy.cs
- GroupJoinQueryOperator.cs
- Style.cs
- ViewStateException.cs
- KernelTypeValidation.cs
- DesignerExtenders.cs
- ColorIndependentAnimationStorage.cs
- BreadCrumbTextConverter.cs
- WorkflowApplicationEventArgs.cs
- BitmapFrameEncode.cs
- AdCreatedEventArgs.cs
- XPathScanner.cs
- UnauthorizedAccessException.cs
- UrlMappingsSection.cs
- HtmlSelect.cs
- EventEntry.cs
- Point3D.cs
- ArraySortHelper.cs
- RuntimeConfigLKG.cs
- XmlSerializableReader.cs
- Signature.cs
- MobileFormsAuthentication.cs
- SqlDataSourceView.cs
- Hex.cs
- ResourceReferenceExpression.cs
- AddIn.cs
- _HTTPDateParse.cs
- ZipPackage.cs
- GenericRootAutomationPeer.cs
- SQLInt32Storage.cs
- DesignerSerializationManager.cs
- TemplatePagerField.cs
- PerformanceCounterPermissionEntry.cs
- DateTimeFormat.cs
- AttributeData.cs
- Exceptions.cs
- DataGridViewComboBoxEditingControl.cs
- ParentQuery.cs
- QuotedPairReader.cs
- ReflectionUtil.cs
- SynchronizationContext.cs
- UIHelper.cs
- DefaultProxySection.cs
- DoubleAnimation.cs
- SimpleHandlerFactory.cs
- SoapFault.cs
- LinkArea.cs
- XmlQualifiedName.cs
- PageStatePersister.cs
- ConstructorNeedsTagAttribute.cs
- Descriptor.cs
- DataTransferEventArgs.cs
- ValidationRule.cs
- MenuItemCollection.cs
- Emitter.cs
- PreviewKeyDownEventArgs.cs
- XmlSchemaImport.cs
- ServiceDebugElement.cs
- ReachUIElementCollectionSerializer.cs
- Gdiplus.cs
- CodeDirectiveCollection.cs
- DesigntimeLicenseContext.cs