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
- BamlResourceDeserializer.cs
- DataReceivedEventArgs.cs
- DataControlImageButton.cs
- FontSource.cs
- SmtpReplyReaderFactory.cs
- EditorAttribute.cs
- RawContentTypeMapper.cs
- RepeaterItemCollection.cs
- InkCanvas.cs
- UpdateRecord.cs
- FixedSOMLineRanges.cs
- XmlQueryRuntime.cs
- NativeMethods.cs
- VisualBrush.cs
- SettingsBase.cs
- XmlLanguage.cs
- HybridWebProxyFinder.cs
- BitHelper.cs
- TimeEnumHelper.cs
- DataGridViewSelectedColumnCollection.cs
- oledbconnectionstring.cs
- GroupBoxAutomationPeer.cs
- FrameSecurityDescriptor.cs
- StylusButtonCollection.cs
- ClientProtocol.cs
- MdiWindowListItemConverter.cs
- RowUpdatedEventArgs.cs
- NamedPipeConnectionPool.cs
- ProfileEventArgs.cs
- MouseActionConverter.cs
- NetworkInformationException.cs
- DetailsViewRow.cs
- EntityStoreSchemaGenerator.cs
- ValidateNames.cs
- CallTemplateAction.cs
- SoapExtensionTypeElementCollection.cs
- FormatConvertedBitmap.cs
- XmlDocumentSurrogate.cs
- TypeResolver.cs
- EventManager.cs
- GuidConverter.cs
- _RequestCacheProtocol.cs
- CanonicalizationDriver.cs
- BamlLocalizableResourceKey.cs
- RemotingException.cs
- UIElement3D.cs
- MenuScrollingVisibilityConverter.cs
- PageRouteHandler.cs
- DiffuseMaterial.cs
- IndexedGlyphRun.cs
- CodeParameterDeclarationExpressionCollection.cs
- TextTreeInsertElementUndoUnit.cs
- EmptyEnumerable.cs
- OrderedDictionary.cs
- DeferredTextReference.cs
- EventlogProvider.cs
- validation.cs
- DesignerOptionService.cs
- PseudoWebRequest.cs
- parserscommon.cs
- ParameterCollection.cs
- DataGridTextColumn.cs
- ProtocolProfile.cs
- SQLInt16.cs
- Enumerable.cs
- NameTable.cs
- SchemaInfo.cs
- Function.cs
- Inline.cs
- NativeMethods.cs
- DropDownList.cs
- VariantWrapper.cs
- ArraySubsetEnumerator.cs
- DataGridViewLinkCell.cs
- X509ClientCertificateCredentialsElement.cs
- WmlLiteralTextAdapter.cs
- SoapParser.cs
- CornerRadius.cs
- Range.cs
- InvalidFilterCriteriaException.cs
- SiteIdentityPermission.cs
- ResourcePermissionBase.cs
- EntityDataSourceContextCreatingEventArgs.cs
- InvalidPropValue.cs
- SmiRecordBuffer.cs
- SynchronousSendBindingElement.cs
- DocumentXmlWriter.cs
- MenuItemAutomationPeer.cs
- SecureEnvironment.cs
- PathFigure.cs
- GenericWebPart.cs
- FunctionNode.cs
- BinaryFormatterSinks.cs
- UserControlBuildProvider.cs
- AudioBase.cs
- SerTrace.cs
- ColumnCollectionEditor.cs
- CounterSetInstance.cs
- MessageQueuePermissionAttribute.cs
- Pen.cs