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
- Int16AnimationBase.cs
- DynamicDataRouteHandler.cs
- ProxyManager.cs
- SqlMetaData.cs
- InvokeWebServiceDesigner.cs
- DataContext.cs
- Animatable.cs
- ColumnWidthChangedEvent.cs
- QueryStoreStatusRequest.cs
- ListControl.cs
- ListCommandEventArgs.cs
- SqlDataSource.cs
- CheckBox.cs
- RichTextBoxAutomationPeer.cs
- GenerateHelper.cs
- CanonicalXml.cs
- SafeNativeMethods.cs
- FirstMatchCodeGroup.cs
- ASCIIEncoding.cs
- TraceShell.cs
- SqlRewriteScalarSubqueries.cs
- Propagator.JoinPropagator.cs
- CommandExpr.cs
- TCPClient.cs
- AssemblyBuilderData.cs
- WebBrowserDocumentCompletedEventHandler.cs
- SlotInfo.cs
- tabpagecollectioneditor.cs
- Maps.cs
- DocumentXmlWriter.cs
- Vector3DCollectionValueSerializer.cs
- AllowedAudienceUriElement.cs
- parserscommon.cs
- DataGridTablesFactory.cs
- IpcServerChannel.cs
- CacheEntry.cs
- UIElement3D.cs
- ConstNode.cs
- SystemKeyConverter.cs
- FlowDocumentReaderAutomationPeer.cs
- UTF32Encoding.cs
- WindowsFormsHost.cs
- Shape.cs
- OutputCache.cs
- TextSelectionHelper.cs
- InputMethodStateChangeEventArgs.cs
- MarshalByRefObject.cs
- Win32Native.cs
- PrintController.cs
- MaterialGroup.cs
- ReflectionTypeLoadException.cs
- MatrixValueSerializer.cs
- ValidationSummaryDesigner.cs
- SpecularMaterial.cs
- ButtonBase.cs
- DispatchWrapper.cs
- RuleSettings.cs
- ISCIIEncoding.cs
- ConnectionStringSettings.cs
- InlineObject.cs
- ByteViewer.cs
- SupportsEventValidationAttribute.cs
- RemotingSurrogateSelector.cs
- PersistChildrenAttribute.cs
- Timer.cs
- SchemaComplexType.cs
- If.cs
- _BufferOffsetSize.cs
- ComboBoxAutomationPeer.cs
- AssemblyResolver.cs
- XmlJsonWriter.cs
- CollectionDataContract.cs
- Point3DAnimationBase.cs
- ExceptionTrace.cs
- HtmlTableCellCollection.cs
- TransformerInfoCollection.cs
- DocComment.cs
- Highlights.cs
- RewritingProcessor.cs
- Certificate.cs
- CheckoutException.cs
- WebPartTransformer.cs
- MulticastNotSupportedException.cs
- SimpleBitVector32.cs
- HttpClientCertificate.cs
- ProjectedWrapper.cs
- ToolStripItemTextRenderEventArgs.cs
- WebPartConnectionCollection.cs
- TrackingParameters.cs
- CodeDefaultValueExpression.cs
- initElementDictionary.cs
- SqlDataSourceEnumerator.cs
- ConfigViewGenerator.cs
- RightNameExpirationInfoPair.cs
- TypeUnloadedException.cs
- UserControlCodeDomTreeGenerator.cs
- CommandEventArgs.cs
- SafeNativeMethods.cs
- JournalEntryListConverter.cs
- EndOfStreamException.cs