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
- TargetParameterCountException.cs
- MarkupExtensionParser.cs
- DrawingBrush.cs
- ProcessModelSection.cs
- IIS7UserPrincipal.cs
- SqlCaseSimplifier.cs
- MeasureItemEvent.cs
- AuthenticationService.cs
- TextChange.cs
- Byte.cs
- ServiceReference.cs
- FormsAuthentication.cs
- MailWebEventProvider.cs
- ConfigXmlElement.cs
- SiteMapNode.cs
- XmlNotation.cs
- RepeatButton.cs
- control.ime.cs
- Lease.cs
- CodeDelegateInvokeExpression.cs
- _IPv6Address.cs
- StringKeyFrameCollection.cs
- SerializationEventsCache.cs
- ProgressChangedEventArgs.cs
- SoapEnvelopeProcessingElement.cs
- SqlConnectionPoolGroupProviderInfo.cs
- Pen.cs
- TranslateTransform.cs
- SQLBinaryStorage.cs
- SplineKeyFrames.cs
- HtmlInputPassword.cs
- ToolboxItemCollection.cs
- XmlChoiceIdentifierAttribute.cs
- DataTableCollection.cs
- LinqDataSourceHelper.cs
- ILGenerator.cs
- TableParagraph.cs
- NameSpaceExtractor.cs
- DetailsViewUpdatedEventArgs.cs
- InputLanguageProfileNotifySink.cs
- AppSecurityManager.cs
- LZCodec.cs
- PerformanceCounterCategory.cs
- PathSegmentCollection.cs
- SafeSecurityHandles.cs
- GCHandleCookieTable.cs
- EditorPartChrome.cs
- Profiler.cs
- AuthorizationSection.cs
- XmlDataContract.cs
- ConditionalAttribute.cs
- InputLanguageManager.cs
- KeyGesture.cs
- RtType.cs
- PageThemeBuildProvider.cs
- DataTableMappingCollection.cs
- CreateRefExpr.cs
- DesignTimeVisibleAttribute.cs
- Primitive.cs
- HtmlEncodedRawTextWriter.cs
- KeyFrames.cs
- File.cs
- Scripts.cs
- TemplateBaseAction.cs
- TreeViewEvent.cs
- TextElementCollectionHelper.cs
- RelatedImageListAttribute.cs
- WebPartConnectionsConfigureVerb.cs
- RegexBoyerMoore.cs
- DesignerSerializationVisibilityAttribute.cs
- ListDictionaryInternal.cs
- QilStrConcat.cs
- EntityViewGenerationAttribute.cs
- Expression.cs
- Win32Exception.cs
- WebBrowserUriTypeConverter.cs
- HandlerWithFactory.cs
- ModelItemDictionaryImpl.cs
- ConstraintStruct.cs
- uribuilder.cs
- HttpCachePolicyElement.cs
- Point3DAnimation.cs
- DbResourceAllocator.cs
- EncodingInfo.cs
- HtmlToClrEventProxy.cs
- BoundPropertyEntry.cs
- MDIClient.cs
- BamlTreeMap.cs
- NotImplementedException.cs
- ExpressionBuilder.cs
- MemberDescriptor.cs
- DbDataRecord.cs
- CommandConverter.cs
- FullTextLine.cs
- BaseAsyncResult.cs
- XmlSchemaValidationException.cs
- ProxyManager.cs
- PreviewPageInfo.cs
- Asn1IntegerConverter.cs
- CryptoStream.cs